浙大版《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<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')
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值