编写代码、打印图4-2所示的图形python_Pta mooc“Python编程浙江大学版”标题集第四章标题及代码解答,PTAMOOCPython,程序设计,浙大,题目,答案...

本文档提供了多个Python编程题目及其解答,包括生成3的乘方表、统计素数并求和、猴子吃桃问题、验证哥德巴赫猜想、求e的近似值、输出Fibonacci数列、统计学生平均成绩与及格人数、求分数序列前N项和、查询水果价格、最大公约数和最小公倍数、判断素数、求满足条件的斐波那契数以及打印图形等。代码实现详尽,适合学习Python编程者参考。
摘要由CSDN通过智能技术生成

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

输出格式:

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

输入样例:

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

[3] orange

[4] grape

[0] exit

用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。

输入格式:

输入在一行中给出用户连续输入的若干个编号。

输出格式:

首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。

输入样例1:

3 -1 0 2

输出样例1:

[1] apple

[2] pear

[3] orange

[4] grape

[0] exit

price = 4.10

price = 0.00

输入样例2:

1 2 3 3 4 4 5 6 7 8

输出样例2:

[1] apple

[2] pear

[3] orange

[4] grape

[0] exit

price = 3.00

price = 2.50

price = 4.10

price = 4.10

price = 10.20

代码

n=input().split(" ")

n=list(map(int,n))

count=0

print("[1] apple")

print("[2] pear")

print("[3] orange")

print("[4] grape")

print("[0] exit")

for i in range(len(n)):

if n[i]==1:

count+=1

print("price = 3.00")

elif n[i]==2:

count+=1

print("price = 2.50")

elif n[i]==3:

count+=1

print("price = 4.10")

elif n[i]==4:

count+=1

print("price = 10.20")

elif n[i]==0:

count=5

else:

count+=1

print("price = 0.00")

if count == 5 :

break

7-10 最大公约数和最小公倍数 (15分)

本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:

输入在一行中给出两个正整数M和N(≤1000)。

输出格式:

在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

输入样例:

511 292

输出样例:

73 2044

代码

m,n=input().split()

m=int(m)

n=int(n)

a,b=0,0

if m>=n:

max=m

min=n

else:

max=n

min=m

for i in range(n,0,-1):

if m % i == 0 and n % i == 0:

a=i

break

for i in range(max,m*n+1):

if i % m == 0 and i % n == 0:

b=i

break

print("%d %d"%(a,b))

7-11 判断素数 (20分)

判断一个给定的正整数是否素数

输入格式:

输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于1000000 的需要判断的正整数

输出格式:

对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No

输入样例:

在这里给出一组输入。例如:

2

11

111

输出样例:

在这里给出相应的输出。例如:

Yes

No

代码

def a(num):

flag=1

for i in range(2,num):

if num % i == 0:

flag=0

break

return flag

n=int(input())

data=[]

for i in range(n):

data.append(int(input()))

for i in data:

if a(i) == 1:

print("Yes")

else:

print("No")

7-12 求满足条件的斐波那契数 (30分)

斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……,这个数列从第3项开始,每一项都等于前两项之和。求大于输入数的最小斐波那契数。

输入格式:

在一行输人一个正整数n(n>=10)。

输出格式:

在一行输出大于n的最小斐波那契数。

输入样例:

在这里给出一组输入。例如:

10

输出样例:

在这里给出相应的输出。例如:

13

代码

n=int(input())

data=[1,1]

i=1

while n > data[i]:

i+=1

data.append(data[i-1]+data[i-2])

print(data[i])

8-1 打印图形 (15分)

4-1. 编写程序,输出下面(a)、(b)和(c)图案。 程序压缩后(zip)以文件形式上传!

7bc52a22168cef40ecc87e558fb7c249.png

代码

def a(num):

for i in range(1,num+1):

print("*"*i)

def b(num):

for i in range(1,num+1):

print(" "*(num-i),end="")

print("*"*(2*i-1))

def c(num):

for i in range(1,(num//2)+1):

print(" "*(num//2+1-i),end="")

print("*"*(2*i-1))

print("*"*num)

for i in range((num//2),0,-1):

print(" "*(num//2+1-i),end="")

print("*"*(2*i-1))

def main():

a(5)

b(5)

c(5)

if __name__ == "__main__":

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值