PTA
PTA-MOOC《Python程序设计浙⼤版》题⽬集第四章题⽬及代码答案7-1 ⽣成3的乘⽅表 (15分)输⼊⼀个⾮负整数n,⽣成⼀张3的乘⽅表,输出3~3n的值。可调⽤幂函数计算3的乘⽅。输⼊格式:输⼊在⼀⾏中给出⼀个⾮负整数n。输出格式:按照幂的递增顺序输出n+1⾏,每⾏格式为“pow(3,i) = 3的i次幂的值”。题⽬保证输出数据不超过长整型整数的范围。输⼊样例:3输出样例:pow(3,0)=1pow(3,1)=3pow(3,2)=9pow(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)。输出格式:网易uu加速器mac在⼀⾏中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。输⼊样例:宽带接入方式1031输出样例:7143代码m,n=input().split(" ")count=0flag=1num=0for i in range(int(m),int(n)+1):for j in range(2,i):if i % j ==0:breakelse:flag+=1if flag == i-1:count+=icad看图num+=1flag=1print("%d %d"%(num,count))7-3 猴⼦吃桃问题 (15分)⼀只猴⼦第⼀天摘下若⼲个桃⼦,当即吃了⼀半,还不过瘾,⼜多吃了⼀个;第⼆天早上⼜将剩下的桃⼦吃掉⼀半,⼜多吃了⼀个。以后每天早上都吃了前⼀天剩下的⼀半加⼀个。到第N天早上想再吃时,见只剩下⼀个桃⼦了。问:第⼀天共摘了多少个桃⼦?输⼊格式:输⼊在⼀⾏中给出正整数N(1<N≤10)。输出格式:在⼀⾏中输出第⼀天共摘了多少个桃⼦。输⼊样例:3itunesstore输出样例:10代码n=int(input())count=1for i in range(n-1):count=(count+1)*2print(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=1if i==1:return0for j in range(2,int(i**0.5)+1):if i%j==0:移动上网设置flag=0breakreturn flagn=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))break7-5 求e的近似值 (15分)⾃然常数 e 可以⽤级数 1+1/1!+1/2!+…+1/n!+… 来近似计算。本题要求对给定的⾮负整数 n,求该级数的前 n+1 项和。输⼊格式:输⼊第⼀⾏中给出⾮负整数 n(≤1000)。输出格式:在⼀⾏中输出部分和的值,保留⼩数点后⼋位。godaddy注册教程输⼊样例:10输出样例:2.71828180代码def a(n):num=1for i in range(1,n+1):num*=ireturn numn=int(input())sum=0for 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:711235813输⼊样例2:输出样例2:Invalid.微软日语输入法2007n=int(input())count=0data=[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+=1if count %5!=0and i != n-1:print("%11d"%num,end="")else:print("%11d"%num)else:print("Invalid.")7-7 统计学⽣平均成绩与及格⼈数 (15分)本题要求编写程序,计算学⽣们的平均成绩,并统计及格(成绩不低于60分)的⼈数。题⽬保证输⼊与输出均在整型范围内。输⼊格式:输⼊在第⼀⾏中给出⾮负整数N,即学⽣⼈数。第⼆⾏给出N个⾮负整数,即这N位学⽣的成绩,其间以空格分隔。输出格式:按照以下格式输出:average = 成绩均值count = 及格⼈数其中平均值精确到⼩数点后⼀位。输⼊样例:57754927360ultraedit破解版输出样例:average =71.2count =4代码count=0if 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+=1print("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=0for 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[3] orange[4] grape[0] exit⽤户可以输⼊编号1~4查询对应⽔果的单价。当连续查询次数超过5次时,程序应⾃动退出查询;不到5次⽽⽤户输⼊0即退出;输⼊其他编号,显⽰价格为0。输⼊格式:输⼊在⼀⾏中给出⽤户连续输⼊的若⼲个编号。输出,要求,超过,本题,整数,查询