您的位置:首页 > 编程语言 > Python开发

浙大版《Python 程序设计》题目集 编程题第四章

2020-03-06 15:54 288 查看

第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<error:
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')
  • 点赞
  • 收藏
  • 分享
  • 文章举报
李哥天下第一 发布了11 篇原创文章 · 获赞 1 · 访问量 898 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: