当前位置: 代码迷 >> 综合 >> PTA-浙大版《Python 程序设计》AC解答汇总-第四章
  详细解决方案

PTA-浙大版《Python 程序设计》AC解答汇总-第四章

热度:99   发布时间:2023-09-26 22:27:18.0
def is_prime(x):if x<2:return Falseelif x==2:return Trueelse :for i in range(2,int(math.sqrt(x))+1):if x%i==0:return Falsereturn True# 第4章-1 生成3的乘方表 (15分)
def demo_4_1():n=int(input())for i in range(n+1):print("pow(3,%d) = %d"%(i,pow(3,i)))# 第4章-2 统计素数并求和 (20分)
def demo_4_2():m,n=map(int,input().split())cnt,sum=0,0for i in range(m,n+1):if is_prime(i):cnt=cnt+1sum=sum+i print(cnt,sum)# 第4章-3 猴子吃桃问题 (15分)
def demo_4_3():n=int(input())res=1for i in range(n-1):res=(res+1)*2print(res)# 第4章-4 验证“哥德巴赫猜想” (20分)
def demo_4_4():n=int(input())for i in range(2,1000000001):if is_prime(i) and is_prime(n-i):print("%d = %d + %d"%(n,i,n-i))break# 第4章-5 求e的近似值 (15分)
def demo_4_5():n=int(input())print("%.8f"%(sum(1/math.factorial(x) for x in range(n+1))))# 第4章-6 输出前 n 个Fibonacci数 (15分)
def demo_4_6():n=int(input())a,b=0,1if n<1:print("Invalid.")else:for i in range(1,n+1):print("{:>11}".format(b),end="")b=a+b a=b-aif i%5==0:print("")# 第4章-7 统计学生平均成绩与及格人数 (15分)
def demo_4_7():if int(input())>0:scores=list(map(int,input().split()))print("average = %.1f"%(sum(scores)/len(scores)))print("count = %d"%(len([x for x in scores if x >= 60])))else:    print("average = 0.0")print("count = 0")# 第4章-8 求分数序列前N项和 (15分)
def demo_4_8():n=int(input())a,b,res=2,1,0.for i in range(n):res=res+a/ba=a+b b=a-bprint("%.2f"%res)# 第4章-9 查询水果价格 (15分)
def demo_4_9():print("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit")price=[3.,2.5,4.1,10.2]nums=list(map(int,input().split()))for i in range(len(nums)):if nums[i]==0 or i>=5:breakelif nums[i]>0 and nums[i]<5:print("price = %.2f"%price[nums[i]-1])else:print("price = 0.00")# 第4章-10 最大公约数和最小公倍数 (15分)
def gcd(a,b):return b if a==0 else gcd(b%a,a)def demo_4_10():m,n=map(int,input().split())print("%d %d"%(gcd(m,n),m*n/gcd(m,n)))# 第4章-11 判断素数 (20分)
def demo_4_11():n=int(input())for i in range(n):if is_prime(int(input())):print("Yes")else:print("No")# 第4章-12 求满足条件的斐波那契数 (30分)
def demo_4_12():n=int(input())a,b=0,1while b<n:    b=a+b a=b-aprint(b)# 第4章-13 求误差小于输入值的e的近似值 (20分)
# import math 
def demo_4_13():err=float(input())a,b=0.,1.for i in range(1,10000):if b-a>err:a=bb=b+1/math.factorial(i) else:breakprint("%.6f"%b)# 第4章-14 统计字符 (15分)
# case 2是10个blank
def demo_4_14():letter,blank,digit,other,cnt=0,0,0,0,0while 1:a=list(input())for x in a:if x.isalpha():letter=letter+1elif x.isspace():blank=blank+1elif x.isdigit():digit=digit+1else:other=other+1cnt=cnt+len(a)+1blank=blank+1 #每一行有个回车 if cnt>10:breakprint("letter = %d, blank = %d, digit = %d, other = %d"%(letter,blank-1,digit,other))# 第4章-15 换硬币 (20分)
def demo_4_15():n=int(input())cnt=0for fen5 in range(n//5,0,-1):for fen2 in range(n//2,0,-1):for fen1 in range(n,0,-1):if (fen5*5+fen2*2+fen1 == n):print('fen5:%d, fen2:%d, fen1:%d, total:%d'%(fen5, fen2, fen1, fen1+fen2+fen5))cnt=cnt+1print('count = %d'%cnt)# 第4章-16 jmu-python-判断是否构成三角形 (10分)
def demo_4_16():nums=list(map(int,input().split()))if sum(nums)-2*max(nums)>0:print("yes")else:print("no")# 第4章-17 水仙花数(20 分) (20分)
def demo_4_17():n=int(input())for i in range(pow(10,n-1),pow(10,n)):sum=0for x in str(i):sum=sum+pow(int(x),n)if sum==i:print(i)# 第4章-18 猴子选大王 (20分)
def demo_4_17():n=int(input())a=list('0')*nindex,cnt,last=0,0,0while '0' in a:if a[index]!='1':cnt=cnt+1if cnt>=3:cnt=0a[index]='1'last=indexindex=(index+1)%n   print(last+1)# 第4章-19 矩阵运算 (20分)
def demo_4_19():n=int(input())matrix=[]for i in range(n):a=list(input().split())matrix.append(a)sum=0for i in range(n):for j in range(n):if i!=n-1 and j!=n-1 and i+j!=n-1:sum=sum+int(matrix[i][j])print(sum)    # 第4章-20 求矩阵各行元素之和 (15分)
def demo_4_20():m,n=map(int,input().split())for i in range(m):print(sum([int(x) for x in input().split()]))# 第4章-21 判断上三角矩阵 (15分)
def demo_4_21():n=int(input())for x in range(n):size=int(input())matrix=[]flag=Truefor i in range(size):a=list(input().split())matrix.append(a)for i in range(1,size):for j in range(i):if matrix[i][j]!='0':flag=Falseprint("YES"if flag else "NO")  # 第4章-22 找鞍点 (20分)
def demo_4_22():import numpy as npn=int(input())matrix=[]for i in range(n):a=list(map(int,input().split()))matrix.append(a)npmat=np.array(matrix)for i in range(n):for j in range(n):if npmat.max(1)[i]==npmat.min(0)[j]:print(i,j)exit()print("NONE")# 第4章-23 求矩阵的局部极大值 (15分)
def demo_4_23():m,n=map(int,input().split())matrix=[]for i in range(m):a=list(map(int,input().split()))matrix.append(a)flag=Truefor i in range(1,m-1):for j in range(1,n-1):if matrix[i][j]>matrix[i][j-1] and matrix[i][j]>matrix[i-1][j] and \matrix[i][j]>matrix[i+1][j] and matrix[i][j]>matrix[i][j+1] :print(matrix[i][j],i+1,j+1)flag=Falseif flag:print("None",m,n)# 第4章-24 打印九九口诀表 (15分)
def demo_4_24():n=int(input())for i in range(1,n+1):for j in range(1,i+1):print("{:d}*{:d}={:<4d}".format(j,i,i*j),end="")print("")# 第4章-25 输出三角形字符阵列 (15分)
def demo_4_25():n=int(input())c=ord("A")for i in range(n):for j in range(n-i):print("%c"%c,end=" ")   c=c+1     print("")# 第4章-26 求1!+3!+5!+……+n! (10分)
def demo_4_26():import mathn=int(input())sum=0for i in range(1,n+1,2):sum=sum+math.factorial(i) print("n=%d,s=%d"%(n,sum))# 第4章-27 二维数组中每行最大值和每行和 (10分)
def demo_4_27():nums=list(map(int,input().split()))for i in range(0,8,3):abc=nums[i:i+3]print("%4d%4d%4d%4d%4d"%(abc[0],abc[1],abc[2],max(abc),sum(abc)))# 第4章-28 矩阵转置 (10分)
def demo_4_28():nums=list(map(int,input().split()))for i in range(3):print("%4d%4d%4d"%(nums[i+0],nums[i+3],nums[i+6]))# 第4章-29 找出不是两个数组共有的元素 (20分)
def demo_4_29():nums1=list(input().split())nums2=list(input().split())nums1.pop(0)nums2.pop(0)out=[]for x in nums1:if x not in nums2 and x not in out:out.append(x)for x in nums2:if x not in nums1 and x not in out:  out.append(x)   print(" ".join(out))# 第4章-30 找完数 (20分)
def demo_4_30():import mathm,n=map(int,input().split())none=Truefor i in range(m,n+1):factor=[1,]for f in range(2,int(math.sqrt(i)+1)):#不然会超时if i//f==i/f:factor.append(int(f))factor.append(int(i/f))#同时记录对称因子if sum(factor)==i:none=Falseprint("%d = "%i,end="")print(" + ".join("%s"%x for x in sorted(factor)))#对称因子导致不按顺序if none:print("None")