PTA-浙大版 《Python程序设计》 第四章编程题目及答案

本文整理了浙江大学《Python程序设计》第四章的编程题目,涵盖从乘方表、素数判断到矩阵操作等多个算法问题,旨在帮助读者理解和实践Python编程技巧。
摘要由CSDN通过智能技术生成

第四章的编程题目已经总结完毕了,欢迎大家分享对题目算法的见解~


目录

第一题:生成输入数的乘方表 

第二题:判断素数

第三题:显示指定范围的素数并求和

第四题:猴子吃桃问题

第五题:求分数序列前N项和 

第六题:运费打折问题

第七题:最大公约数和最小公倍数 

第八题:求满足条件的斐波那契数 

第九题:求误差小于输入值的e的近似值 

第十题:求π的近似值

第十一题:水仙花数

第十二题:找出不是公共的元素

第十三题:找完数 

第十四题:猴子选大王

第十五题:特定矩阵元素和

第十六题:矩阵行、列、对角线和的最大值

第十七题:判断三角矩阵

第十八题:打印九九口诀表

第十九题:求矩阵的局部极大值 

第二十题:矩阵转置

第二十一题:显示直角数字图形 

第二十二题:显示菱形图案

第二十三题:显示Pascal三角形


第一题:生成输入数的乘方表 

输入一个非负数和正整数n,5<=n<=9,生成一张输入数的乘方表。

a,b = map(float,input().split())
for i in range(int(b) + 1):
    print("{}**{}={:.2f}".format(a, i, a**i))

第二题:判断素数

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

num = int(input())
for i in range(num):
    data = int(input())
    for j in range(2,data // 2):
        if data % j == 0:
            print('No')
            break
    else:
        print('Yes')

第三题:显示指定范围的素数并求和

本题要求显示给定整数M和N区间内素数并对它们求和。

import math
a,b = map(int,input().split())
result = []
for i in range(a + 1,b):
    for j in range(2,i//2 + 1):
        if i % j == 0:
            break
    else:
        result.append(i)
for i in range(len(result)):
    print(result[i], end = ' ')
    if (i+1) % 5 == 0:
        print()
if len(result) % 5 != 0:
    print()
if result != []:
    print('amount=%d sum=%d'%(len(result),sum(result)))
else:   #最后一个测试用例是a,b之间没有素数,但是输出格式为两行:第一行为空,第二行为数量和总和
    print()
    print('amount=%d sum=%d'%(len(result),sum(result)))

这道题被最后一个测试用例绊了很久,最后终于发现是如果输入a、b两个数之间没有素数时,仍然会输出一行空值并换行,因此在程序最后需要对result的长度(或者result是否为空)做一下判断。


第四题:猴子吃桃问题

一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?4

 

day = int(input())
result = 1
for i in range(day - 1):
    result = (result+ 1) * 2
print(result)

第五题:求分数序列前N项和 

本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

num = int(input())
result = 0
first_deno = 2  #首项分母
first_num = 1   #首项分子
for i in range(num):
    result += first_deno / first_num
    mid = first_deno  
    first_deno = first_deno + first_num
    first_num = mid
print("%.2f" %result)

第六题:运费打折问题

weight,mile = map(float,input().split())
cost = 1
if mile >= 3000:
    cost *= 0.85
elif mile < 3000 and mile >= 2000:
    cost *= 0.9
elif mile < 2000 and mile >= 1000:
    cost *= 0.92
elif mile < 1000 and mile >= 500:
    cost *= 0.95
elif mile < 500 and mile >= 250:
    cost *= 0.98

print(int(cost * weight * mile))

第七题:最大公约数和最小公倍数 

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

给定数A、B,则两者的最小公倍数(LCM)和最大公约数(GCD)满足:     LCM = \frac{A \times B}{GCD},所以只需要求得A、B的最大公约数即可。

a,b = map(int,input().split())
min_ = 1
for i in range(1,min(a,b) + 1):
    if a % i == 0 and b % i == 0:
        min_ = i
max_ = a * b / min_
print('%d %d' %(min_,max_))

第八题:求满足条件的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值