Python 函数 练习题

本文通过一系列编程题目展示了Python在解决递归问题和数学问题中的应用,包括阶乘计算、素数判断、兔子繁殖问题等。递归函数如`fact()`用于计算阶乘,`isPrime()`用于判断素数,而`countdown()`计算特定级数的和。同时,文章还介绍了如何构建数字与字母对应字典并输出偶数键的元素。
摘要由CSDN通过智能技术生成

目录

题目一

题目

代码

题目二

题目

代码

题目三

题目

代码

题目四

题目

代码

题目五

题目

代码

题目六

题目

代码

题目七

题目

代码


题目一

题目

        定义n!的函数fact(),丙在此基础上编写求和函数sumfact(),实现1!+2!+...n!的计算。

代码

def fact(n):
    s=1;
    if n<=1:
        if n==0 or n==1:
            return 1
        else:
            print("n不能小于0!")
    else:
        for i in range(1,n+1):
            s*=i
        return s

def sumfact(n):
    s=0
    for i in range(1,n+1):
        s+=fact(i)
    return s

n=int(input("请输入n:"))
sum=sumfact(n)
print("1!+2!+...+n!={}".format(sum))

题目二

题目

        定义素数判别函数list_prime(),该函数可以同步判断任意个数是否是素数,并将所有素数作为返回值。在此基础上编程实现随即输入任意个数,从中挑选出所有素数,并计算所有素数的平方和。

代码

def list_prime(num):
    sum = 0
    for i in range(1,num):
        if (num % i==0):
            sum +=1;
    if sum>=2:
        return 0
    else:
        return num*num

str = eval(input("请随机输入任意个数(以逗号分割):"))
sum = 0
for i in str:
    sum += list_prime(i)
print("你输入的数组中所有素数的平方和为:{}".format(sum))

题目三

题目

        判断101-200之间有多少个素数,求取并打印这些素数。要求:定义函数IsPrime()用于求取素数。

代码

def IsPrime(n):
    s=0
    for i in range(1,n):
        if n%i==0:
            s+=1
    return s

sum=0
for i in range(101,201):
    s=0
    if IsPrime(i)<2:
        sum+=1
        print(i,end=" ")
print("\n一共有{}个素数".format(sum))

题目四

题目

        用递归的方式编写求n!的函数fact()。

代码

# 方法一:
# def fact(n):
#     sum=1
#     if n==1 or n==0:
#         return 1
#     elif(n>1):
#         for i in range(1,n+1):
#             sum*=i
#     return sum
# n=eval(input("请输入n:"))
# print(fact(n))

# 方法二:
def fact(n):
    if n==1 or n==0:
        return 1
    elif(n>1):
        return n*fact(n-1)

n=int(input("请输入n:"))
print("{}!={}".format(n,fact(n)))

题目五

题目

        分别定义numlist()和charlist()函数,numlist()函数的功能是生成由数字1~26构成的列表,charlist()函数的功能是生成由字符a~z构成的列表。在此基础上编写程序实现生成一个字典,具体形式如下:         

                {1: ‘a’, 2: ‘b’, 3: ‘c’, 4: ‘d’, 5: ‘e’, 6: ‘f’, 7: ‘g’,         

                8: ‘h’, 9: ‘i’, 10: ‘j’,11: ‘k’, 12: ‘l’, 13: ‘m’,14: ‘n’,         

                15: ‘o’, 16: ‘p’, 17: ‘q’, 18: ‘r’, 19: ‘s’, 20: ‘t’,

                21: ‘u’, 22: ‘v’, 23: ‘w’, 24: ‘x’, 25: ‘y’,26: ‘z’}

遍历字典,输出所有键为偶数的元素。

代码

def numlist():
    num=[]
    for i in range(1,27):
        num.append(i)
    return num

def charlist():
    char=[]
    for i in range(26):
        char.append(chr(ord('a')+i))
    return char

# dictionary=zip(numlist(),charlist())
# print(numlist())
# print(charlist())
# print(dictionary)
# print(list(dictionary))

dictionary=dict(zip(numlist(),charlist()))
for key in dictionary:
    if key%2==0:
        print(dictionary[key],end=" ")

题目六

题目

        编写一个递归函数,计算下面的级数:m(n)=1+1/2+1/3+...+1/n

代码

# # 方法一
# def countdown(n):
#     return 1/n
#
# n=int(input("请输入n:"))
# sum=0
# for i in range(1,n+1):
#     sum+=countdown(i)
# print("sum的值为:{}".format(sum))

# 方法二
def countdown(n):
    sum=0
    for i in range(1,n+1):
        sum+=1/i
    return sum

n=int(input("请输入n:"))
print("sum的值为:{}".format(countdown(n)))

题目七

题目

        古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

month(月份)兔子总数(对)
11
21
32
43
55
68
713
821
934
......

代码

def count(month):
    if month==1 or month==2:
        return 1
    elif month>2:
        # 第1个月的兔子总数
        a=1
        # 第2个月的兔子总数
        b=1
        # 兔子总数
        count=0
        for i in range(3,month+1):
            count=a+b
            a=b
            b=count
        return count

month = int(input("请输入month:"))
print("第{}个月兔子的总数为:{}对".format(month,count(month)))


# 方法二
def count(month):
    sum=0
    if month==1 or month==2:
        sum=1
    elif month>2:
        for i in range(1,month+1):
            sum=count(i-1)+count(i-2)
    return sum

month = int(input("请输入month:"))
print("第{}个月兔子的总数为:{}对".format(month,count(month)))

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值