浙大版python程序设计_浙江大学“Python编程”专题集第四章,浙大,版,程序设计,题目...

第4章-1 生成3的乘方表

from math import pow

n=int(input())

for i in range(n+1):

print('pow(3,{0}) = {1}'.format(i,int(pow(3,i))))

第4章-2 统计素数并求和

def isprime(n):

for i in range(2,n):

if n%i==0:

return False

else:

return True

m,n=map(int,input().split())

prime=[]

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

if isprime(i) and i>1:

prime.append(i)

print(len(prime),sum(prime))

第4章-3 猴子吃桃问题

n=int(input())

sum=1

for i in range(n-1):

sum=(sum+1)*2

print(sum)

第4章-4 验证“哥德巴赫猜想”

from math import sqrt

def isprime(n):

for i in range(2,int(sqrt(n)+1)):

if n%i==0:

return False

else:

return True

x=int(input())

for i in range(2,x):

if isprime(i) and isprime(x-i):

break

print('{0} = {1} + {2}'.format(x,i,x-i))

第4章-5 求e的近似值

def fac(n):

sum=1

for i in range(2,n+1):

sum*=i

return sum

x=int(input())

s=[1/fac(i) for i in range(1,x+1)]

print('{0:.8f}'.format(sum(s)+1))

第4章-6 输出前 n 个Fibonacci数

fibs=[1,1]

n=int(input())

for i in range(n-2):

fibs.append(fibs[-1]+fibs[-2])

if n<1:

print('Invalid.')

else:

for i in range(n):

print('{0:11d}'.format(fibs[i]),end='')

if (i+1)%5==0:

print()

第4章-7 统计学生平均成绩与及格人数

n=int(input())

if n==0:

print('average = 0.0')

print('count = 0')

else:

l=list(map(int,input().split()))

s=[i for i in l if i>=60]

print('average = {0:.1f}'.format(sum(l)/n))

print('count =',len(s))

第4章-8 求分数序列前N项和

n=int(input())

a=2

b=1

sum=a/b

for i in range(n-1):

temp=a

a=a+b

b=temp

sum+=a/b

print('{:.2f}'.format(sum))

第4章-9 查询水果价格

print('[1] apple')

print('[2] pear')

print('[3] orange')

print('[4] grape')

print('[0] exit')

l=list(map(int,input().split()))

price=[3.00,2.50,4.10,10.20]

cnt=0

for i in l:

cnt+=1

if cnt>5 or i==0:

break

if i<0 or i>4:

print('price = 0.00')

else:

print('price = {:.2f}'.format(price[i-1]))

第4章-10 最大公约数和最小公倍数

'''求,就硬求

m,n=map(int,input().split())

max=max([i for i in range(1,m) if m%i==0 and n%i==0])

min=0

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

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

min=i

break

print(max,min)

'''

#老祖宗的辗转相除法

def gcd(m,n):

if m%n == 0:

return n

else :

return gcd(n,m%n)

m,n=map(int,input().split())

print('{} {}'.format(gcd(m,n),m*n//gcd(m,n)))

第4章-11 判断素数

from math import sqrt

def isprime(n):

if n<=1:

return False

for i in range(2,int(sqrt(n)+1)):

if n%i==0:

return False

else:

return True

n=int(input())

for i in range(n):

x=int(input())

if isprime(x):

print('Yes')

else:

print('No')

第4章-12 求满足条件的斐波那契数

n=int(input())

fibs=[1,1]

while fibs[-1]<=n:

fibs.append(fibs[-1]+fibs[-2])

print(fibs[-1])

第4章-13 求误差小于输入值的e的近似值

def fac(n):

sum=1

for i in range(2,n+1):

sum*=i

return sum

error=float(input())

sum1=1

sum2=0

i=1

while True:

sum1=sum1+1/fac(i)

i+=1

sum2=sum1+1/fac(i)

if sum2-sum1

break

print('{:.6f}'.format(sum2))

第4章-14 统计字符

'''

本题难点在于不知道10个字符分几行输入

所以每接收一行都要要统计回车数

'''

enter=0;letter=0;blank=0;digit=0;other=0

c=''

while True:

s=input()

enter+=1

c+=s

if len(c)+enter>10:

enter-=1

break

for i in c:

if i.isalpha():

letter+=1

elif i==' ':

blank+=1

elif i.isdigit():

digit+=1

else:

other+=1

print('letter = {}, blank = {}, digit = {}, other = {}'.format(letter,blank+enter,digit,other))

第4章-15 换硬币

x=int(input())

count=0

fen5=0;fen2=0;fen1=0;total=0

for a in range(x//5,0,-1):

for b in range(x//2,0,-1):

for c in range(x,0,-1):

if 5*a+2*b+c*1==x:

print('fen5:{}, fen2:{}, fen1:{}, total:{}'.format(a,b,c,a+b+c))

count+=1

print('count =',count)

第4章-16 jmu-python-判断是否构成三角形

a,b,c=map(int,input().split())

if a+b<=c or a+c<=b or b+c<=a:

print('no')

else:

print('yes')

第4章-17 水仙花数

from math import pow

n=int(input())

start=int(pow(10,n-1))

stop=int(pow(10,n))

for i in range(start,stop):

l=str(i)

s=[int(pow(int(j),n)) for j in l]

if i==sum(s):

print(i)

第4章-18 猴子选大王

'''我的辣鸡代码如下

n=int(input())

l=[i for i in range(1,n+1)]

cnt0=0 #记录报3的人数

cnt=0 #记录报数报到几了

while True:

for i in range(n):

if l[i]!=0: #只有不为0的人有资格报数

cnt+=1

if cnt==3:

l[i]=0 #报3的人将其编号置零

cnt=0 #并且重新开始报数

cnt0+=1 #报3的人数+1

for i in range(n):

if l[i]!=0:

l[i]+=cnt #报完一遍数后,接着上一个报数

if cnt0==n-1: #当报3的人数为n-1时,剩下的为王

break

for i in range(n):

if l[i]!=0: #最后不为0的人只有一个,通过遍历找出

print(i+1)

'''

'''大佬的

https://tuenity.blog.csdn.net/article/details/102609489

这个解答为下面的评论区的回复,作者为@zjuvegetable

侵删

'''

#约瑟夫环问题

n=int(input())

if n == 1:

print(1)

else:

monkey=[i for i in range(1,n+1)]

while len(monkey) >= 3:

monkey.pop(2)

monkey.append(monkey.pop(0))

monkey.append(monkey.pop(0))

print(monkey[1])

第4章-19 矩阵运算

n=int(input())

sum=0

l=[]

for i in range(n):

num=list(input().split())

l.append(num)

for i in range(n):

for j in range(n):

if i+j!=n-1 and i!=n-1 and j!=n-1:

sum+=int(l[i][j])

print(sum)

第4章-20 求矩阵各行元素之和

m,n=map(int,input().split())

for i in range(m):

print(sum(list(map(int,input().split()))))

第4章-21 判断上三角矩阵

x=int(input())

for i in range(x):

y=int(input())

l=[]

flag=True

for j in range(y):

s=list(map(int,input().split()))

l.append(s)

for m in range(1,y):

for n in range(m):

if l[m][n]!=0:

flag=False

if flag:

print('YES')

else:

print('NO')

第4章-22 找鞍点

n=int(input())

l=[]

for i in range(n):

s=list(map(int,input().split()))

l.append(s)

x=[]

y=[]

for i in range(n):

xmax=max([l[i][j] for j in range(n)]) #行最大值

ymin=min([l[j][i] for j in range(n)]) #列最小值

x+=[(i,j) for j in range(n) if l[i][j]==xmax]

y+=[(j,i) for j in range(n) if l[j][i]==ymin]

x=list(set(x)&set(y))

if len(x)==0:

print('NONE')

else:

print(x[0][0],x[0][1])

第4章-23 求矩阵的局部极大值

m,n=map(int,input().split())

l=[]

for i in range(m):

s=list(map(int,input().split()))

l.append(s)

flag=False

for i in range(1,m-1):

for j in range(1,n-1):

if l[i][j]>l[i-1][j] and l[i][j]>l[i+1][j]\

and l[i][j]>l[i][j-1] and l[i][j]>l[i][j+1]:

flag=True

print(l[i][j],i+1,j+1)

if flag==False and i==m-2:

print('None',m,n)

第4章-24 打印九九口诀表

n=int(input())

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

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

print('{0}*{1}={2:<4d}'.format(j,i,i*j),end='')

if j==i:

print()

第4章-25 输出三角形字符阵列

n=int(input())

c='A'

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

for j in range(i):

print('{} '.format(c),end='')

c=chr(ord(c)+1)

if j==i-1:

print()

第4章-26 求1!+3!+5!+……+n!

n=int(input())

if n==1:

print('n=1,s=1')

else:

l=[]

for i in range(1,n+1,2):

s=1

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

s*=j

l.append(s)

print('n={},s={}'.format(n,sum(l)))

第4章-27 二维数组中每行最大值和每行和

l=list(map(int,input().split()))

for i in range(9):

if i%3==0:

s=[]

s.append(l[i])

if i%3==2:

for j in range(3):

print('{:>4d}'.format(s[j]),end='')

print('{:>4d}{:>4d}'.format(max(s),sum(s)))

第4章-28 矩阵转置

l=list(map(int,input().split()))

for i in range(3):

for j in range(9):

if j%3==i:

print('{:>4d}'.format(l[j]),end='')

print()

第4章-29 找出不是两个数组共有的元素

s=list(map(int,input().split()))

t=list(map(int,input().split()))

lens=s.pop(0)

lent=t.pop(0)

l=[]

for i in s:

if i not in t and i not in l:

l.append(i)

for i in t:

if i not in s and i not in l:

l.append(i)

print(*l,sep=' ')

第4章-30 找完数

from math import sqrt

m,n=map(int,input().split())

flag=False

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

l=[1]

for j in range(2,int(sqrt(i))+1):

if i%j==0:

l.append(j)

l.append(i//j)

l=sorted(l)

if i==sum(l):

flag=True

print('{} = '.format(i),end='')

print(*l,sep=' + ')

if flag==False:

print('None')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值