PTA-MOOC《Python程序设计浙大版》题目集第四章题目及代码答案

7-1 生成3的乘方表 (15分)

输入一个非负整数n,生成一张3的乘方表,输出3
​0
​​ ~3
​n
​​ 的值。可调用幂函数计算3的乘方。

输入格式:
输入在一行中给出一个非负整数n。

输出格式:
按照幂的递增顺序输出n+1行,每行格式为“pow(3,i) = 3的i次幂的值”。题目保证输出数据不超过长整型整数的范围。

输入样例:

3

输出样例:

pow(3,0) = 1
pow(3,1) = 3
pow(3,2) = 9
pow(3,3) = 27

代码

n=int(input())
for i in range(n+1):
    print("pow(3,%d) = %d"%(i,pow(3,i)))

7-2 统计素数并求和 (20分)

本题要求统计给定整数M和N区间内素数的个数并对它们求和。

输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。

输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。

输入样例:

10 31

输出样例:

7 143

代码

m,n=input().split(" ")
count=0
flag=1
num=0
for i in range(int(m),int(n)+1):
    for j in range(2,i):
        if i % j == 0:
            break
        else:
            flag+=1
    if flag == i-1:
        count+=i
        num+=1
    flag=1
print("%d %d"%(num,count))

7-3 猴子吃桃问题 (15分)

一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?

输入格式:
输入在一行中给出正整数N(1<N≤10)。

输出格式:
在一行中输出第一天共摘了多少个桃子。

输入样例:

3

输出样例:

10

代码

n=int(input())
count=1
for i in range(n-1):
    count=(count+1)*2
print(count)

7-4 验证“哥德巴赫猜想” (20分)

数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。

输入格式:
输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。

输出格式:
在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。

输入样例:

24

输出样例:

24 = 5 + 19

代码

def a(i):
    flag=1
    if i==1:
        return 0
    for j in range(2,int(i**0.5)+1):
        if i%j==0:
            flag=0
            break
    return flag
n=int(input())
for i in range(1,n//2+1): 
    if a(i) and a(n-i):
        print("%d = %d + %d"%(n,i,n-i))
        break

7-5 求e的近似值 (15分)

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

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

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

输入样例:

10

输出样例:

2.71828180

代码

def a(n):
    num=1
    for i in range(1,n+1):
        num*=i
    return num
n=int(input())
sum=0
for i in range(1,n+1):
    sum+= 1/a(i)
print("%.8f"%(sum+1))

7-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.
n=int(input())
count=0
data=[1,1]
for i in range(2,n+1):
    data.append(data[i-1]+data[i-2])
if n >= 1 :
    for i in range(0,n):
        num=data[i]
        count+=1
        if count % 5 != 0 and i != n-1:
            print("%11d"%num,end="")
        else:
            print("%11d"%num)
else:
    print("Invalid.")

7-7 统计学生平均成绩与及格人数 (15分)

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

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

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

average = 成绩均值
count = 及格人数

其中平均值精确到小数点后一位。

输入样例:

5
77 54 92 73 60

输出样例:

average = 71.2
count = 4

代码

n=int(input())

count=0
if n == 0:
    print("average = 0.0")
    print("count = 0") 
else:
    data=input().split(" ")
    data=list(map(int,data))
    for i in range(n):
        if int(data[i])>=60:
            count+=1
    print("average = %.1f"%(sum(data)/n))
    print("count = %d"%count)

7-8 求分数序列前N项和 (15分)

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

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

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

输入样例:

20

输出样例:

32.66

代码

n=int(input())
data=[1,2]
sum=0
for i in range(2,n+1):
    data.append(data[i-1]+data[i-2])
for i in range(n):
    sum+=data[i+1]/data[i]
print("%.2f"%sum)

7-9 查询水果价格 (15分)

给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。

首先在屏幕上显示以下菜单:

[1] apple
[2] pear

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值