第6周 Python函数刷题(一)

单击题目,直接跳转到页面刷题,一周后公布答案。加入QQ群701657573,随时答疑交流。

  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

参考源码

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

示例输出

质数

参考源码

# 定义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

参考源码

# 定义`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

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(nlogn),双指针扫描的时间复杂度为O(n)。

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

参考源码

# 定义函数
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

参考源码

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

参考源码

# 定义函数 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)
  • 30
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

趣学算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值