第6周 Python函数刷题(一)

单击题目,直接跳转到页面刷题,一周后公布答案。

  1. 229:函数参数打印信息
  2. 185:判断质数(使用函数)
  3. 188:前N个自然数之和
  4. 69:特定两数之和
  5. 235:递归求一个数的阶乘
  6. 26:求第N个斐波那契数
  7. 237:递归计算一个数的幂

1. 229:函数参数打印信息

编写一个函数来打印联系人信息。

步骤 1:

创建函数 display_info()。

函数有两个参数:name(名字) 和 location(地区)。

在两行中分别打印 name 和 location。

步骤 2:

在函数外部:

输入一个字符串,并赋值给country变量。

分别用字符串'Taylor'(名字) 和 变量country 作为参数,调用display_info() 函数。

示例输入

USA

示例输出

Taylor
USA

参考源码

python 复制代码
def display_info(name, location):
    print(name)
    print(location)

# 获取用户输入
country = input()

# 用 'Taylor' 和 country 作为参数调用函数
display_info('Taylor', country)

2. 185:判断质数(使用函数)

编写一个函数:判断一个数字是否是质数。

质数是指只被1或其本身除以的数字。例如,7,5,19,等等。

定义一个名为check_prime()的函数。

在该函数中,创建flag变量,其值为0,并从2到 number - 1 运行一个循环,判断 number 是否能被2 到 number - 1 之间的任何数字所除。

如果数字可以被整除,将flag变量设置为1。

在循环外,如果flag是1,打印非质数。否则,打印 质数。

在函数之外,为number变量获取一个整数输入。

调用该函数,并将number作为一个参数传递。

输入格式

一个整数

示例输入

7

示例输出

质数

参考源码

python 复制代码
# 定义check_prime()的函数
def check_prime(n):
    flag = 0
    # 循环
    for i in range (2, int(n**0.5) + 1):
        # 判断 i是否能整除 number
        # 如果能整除,将flag设置为1
        if n % i == 0:
            flag = 1
    # 根据flag的值,判断是否是质数
    return flag

number = int(input())

# 调用函数
if check_prime(number):
    print("非质数")
else:
    print("质数")

3. 188:前N个自然数之和

编写一个函数:计算前N个自然数的和。

定义find_sum()的函数,以数字n作为参数。

在该函数中,计算从1到n的数字之和,并返回。

在函数外部,为变量number获得一个整数输入。

调用该函数并将number作为参数传递,打印返回值。

输入格式

一个整数

示例输入

9

示例输出

45

参考源码

python 复制代码
# 定义`find_sum()`的函数,以`n`作为参数。
def find_sum(n):
    return n * (n+1) // 2

number = int(input())

# 调用该函数并将`number`作为参数传递,并打印返回值。
print(find_sum(number))

4. 69:特定两数之和

编写一个程序,检查列表是否存在两数字之和等于给定的数。

定义函数is_sum_present(),它接受两个参数 - 一个数字列表num_list和一个数字target_sum。

在函数内,检查列表中的每对数字。如果任意一对数字的和等于target_sum,则返回True。否则,返回False。

示例输入

2 3 7 8 11
14

示例输出

True

解释:

由于我们的目标数是14,而我们列表中的[11, 3]是两个数字,它们相加等于14,因此输出为True。

参考源码1

python 复制代码
def is_sum_present(num_list, target_sum):
    # 此处编写代码
    n = len(num_list)
    for i in range(n):
        for j in range(i+1, n):
            if num_list[i] + num_list[j] == target_sum:
                return True
    return False

# 获取输入
num_list = list(map(int, input().split()))
target_sum = int(input())

# 调用函数 
print(is_sum_present(num_list, target_sum))

参考源码2

参考源码1使用双层for循环,其时间复杂度为O (n ^2)。考虑优化:先排序,然后使用双指针扫描,速度更快。排序的时间复杂度为O (n logn ),双指针扫描的时间复杂度为O (n)。

python 复制代码
def is_sum_present(num_list, target_sum):
    # 此处编写代码
    num_list.sort()
    i = 0
    j = len(num_list) - 1
    while i < j:  # 双指针
        if num_list[i] + num_list[j] == target_sum:
            return True
        elif num_list[i] + num_list[j] < target_sum:
            i += 1
        else:
            j -= 1
    return False


# 获取输入
num_list = list(map(int, input().split()))
target_sum = int(input())

# 调用函数 
print(is_sum_present(num_list, target_sum))

5. 235:递归求一个数的阶乘

编写一个程序,使用递归求一个数的阶乘。

步骤1

定义函数calculate_factorial(),接受一个参数num。

用递归的方式求num的阶乘。

步骤2

输入一个正整数,,并存储在变量number中。。

以number为参数,调用calculate_factorial()函数并将结果存储在result变量中。

打印result。

示例输入

5

示例输出

120

参考源码

python 复制代码
# 定义函数
def calculate_factorial(num):

    # 创建递归的停止条件
    # 提示:想一个不需要任何计算的数
    # 例如:0的阶乘是1
    # 如果 num 是 0 返回 1
    if num == 0:
        return 1
    # 创建一个递归条件,这将帮助我们在每一步中获取 num 的阶乘
    # 想一个最小的工作量
    # 这将执行直到达到基本情况
    return num * calculate_factorial(num-1)

# 从用户那里获取输入
number = int(input())

# 调用 calculate_factorial 函数并将结果存储在 result 变量中
result = calculate_factorial(number)

# 打印结果
print(result)

6. 26:求第N个斐波那契数

斐波那契数列以0(第0项)和1(第1项)开始,每一项都是前两项的和。

编写一个程序来生成第n个斐波那契数。

定义函数fibonacci_number(),参数为n。

在函数中返回第n个斐波那契数。

示例输入

7

示例输出

13

参考源码

python 复制代码
def fibonacci_number(n):
    # 在此处编写你的代码
    if n <= 0:
        return 0
    if n == 1:
        return 1
    return fibonacci_number(n-1) + fibonacci_number(n-2)

# 输入n的整数
n = int(input())
# 调用函数
print(fibonacci_number(n))

7. 237:递归计算一个数的幂

编写一个程序来计算一个数的幂。

步骤1:

定义函数findPower(),参数为base(底数)和power(指数)。

计算base的power次方的值。

步骤2:

输入两个整数,分别作为底数和指数。

调用findPower()函数来计算数字的幂,并将结果存储在result变量中。

打印result。

示例输入

2
3

示例输出

8

参考源码

python 复制代码
# 定义函数 findPower()
def findPower(base, power):

    # 基本情况
    # 任何数的0次方都是1
    if power == 0:
        return 1
    if power % 2:
        return findPower(base, power - 1) * base
    else:
        t = findPower(base, power // 2)
        return t * t
    # 递归调用
    # 我们需要做的最少的工作
    # 将底数乘以底数的power - 1次方
    # return findPower(base, power - 1) * base

# 获取底数和指数的输入
base = int(input())
power = int(input())

# 调用 findPower 函数
result = findPower(base, power)

# 打印结果
print(result)
相关推荐
梧桐树04293 小时前
python常用内建模块:collections
python
Dream_Snowar3 小时前
速通Python 第三节
开发语言·python
XH华4 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生4 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_4 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
落魄君子4 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
菜鸡中的奋斗鸡→挣扎鸡5 小时前
滑动窗口 + 算法复习
数据结构·算法
蓝天星空5 小时前
Python调用open ai接口
人工智能·python
Lenyiin5 小时前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin
jasmine s5 小时前
Pandas
开发语言·python