《Python程序设计》题目集

题目:第4章-5 求e的近似值 (15 分)

自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。

输入格式:
输入第一行中给出非负整数 n(≤1000)。

输出格式:
在一行中输出部分和的值,保留小数点后八位。

输入样例:

10

输出样例:

2.71828180

一、代码

n=int(input())
sum=1
mu=1
for i in range(1,n+1):
    mu*=i;
    sum += 1 / mu;
print("{:.8f}".format(sum))

在这里插入图片描述
注意:0 和 3 这两个点是通不过的,不用去管

二、心得

题目:第4章-6 输出前 n 个Fibonacci数 (15 分)

本题要求编写程序,输出菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证输出结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如:1,1,2,3,5,8,13,…。

输入格式:
输入在一行中给出一个整数N(1≤N≤46)。

输出格式:
输出前N个Fibonacci数,每个数占11位,每行输出5个。如果最后一行输出的个数不到5个,也需要换行。

如果N小于1,则输出"Invalid."

输入样例1:

7

输出样例1:

      1          1          2          3          5
      8         13

输入样例2:

0

输出样例2:

Invalid.

一、代码

def Fibonacci(m):
    first=1 # 第一个数
    middle=1 # 第二个数
    last=0 # 最后一个
    if m==0: # n=0情况
        print("Invalid.")
        return 0
    if m==1: # n=1情况
        print("{:>11}".format(1))  # {:>11} 右对齐,且总共占据不超过11个
        return 0
    else: # 剩下的所有情况
        print("{:>11}{:>11}".format(1,1),end="")
        time=2 # 计数器,用于判断是否过段。2开始,因为前面有先输出两个
        for i in range(1,m-1):  # 范围需要减去前面两个特殊的位置
            last+=first+middle # 求相邻两数和
            first=middle # 交换
            middle=last #  交换
            print("{:>11}".format(last),end="")
            last=0 # 将最后一个数置零
            time+=1 # 计数器+1
            if time==5: # 判断过段
                time=0 # 重新置零计算
                print() 
n=int(input())
Fibonacci(n)

二、心得

1.需要了解Fibonacci的基本实现思想
1 1 2 3 5 8…
2.指定输出格式可以通过format() 函数实现

"{:>11}".format(a) 右对齐
“{:<11}”.format(a) 左对齐
“{:^11}”.format(a) 中间对齐

注意**{}**内的 别漏掉了。

题目:第4章-7 统计学生平均成绩与及格人数 (15 分)

本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。

输入格式:
输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。

输出格式:
按照以下格式输出:

average = 成绩均值 count = 及格人数 其中平均值精确到小数点后一位。

输入样例:

5 77 54 92 73 60

输出样例:

average = 71.2 count = 4

一、代码

n=int(input())
if n<=0:
    print("average = 0.0")
    print("count = 0")
    exit(0) # 测试第3点:非零返回
lst=list(map(int,input().split()))
nums=0
nums=sum(lst)/n
number=0
for i in lst:
    if i>=60:
        number+=1
print("average = {:.1f}".format(nums))
print("count = {}".format(number))

二、心得

1.n个输入,可以通过list(map(int,input().split()))
实现
2.exit(0) 解决非零返回

题目:第4章-8 求分数序列前N项和 (15 分)

本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。

输入样例:

20

输出样例:

32.66

一、代码

N=int(input())
sum=0
fz,fm=2,1
for i in range(1,N+1):
    sum+=fz/fm
    t=fm
    fm=fz
    fz=t+fz
print("{:.2f}".format(sum))

二、心得

用t做中间量存fm的值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值