PTA-浙大版 《Python程序设计》 第四章编程题目及答案(更新中)
2021/4/8 12:09:26
本文主要是介绍PTA-浙大版 《Python程序设计》 第四章编程题目及答案(更新中),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
第一题:生成输入数的乘方表
第三题:显示指定范围的素数并求和
第五题:求分数序列前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))
第三题:显示指定范围的素数并求和
本题要求显示给定整数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项和
本题要求编写程序,计算序列 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)
第七题:最大公约数和最小公倍数
本题要求两个给定正整数的最大公约数和最小公倍数。
给定数A、B,则两者的最小公倍数(LCM)和最大公约数(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_))
第九题:求误差小于输入值的e的近似值
自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。ei代表前i项求和。输入误差范围error,当ei+1-ei<error,则表示e的近似值满足误差范围。
import math acc = float(input()) index = 0 sum_n = 0 while(True): value = 1/math.factorial(index) index += 1 sum_n += value if 1/math.factorial(index) < acc: sum_n += 1/math.factorial(index) break print('%.6f'%sum_n)
第十一题:水仙花数
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。 例如:153=1×1×1+5×5×5+3×3×3。本题要求编写程序,计算所有N位水仙花数。
a = int(input()) for i in range(int('1' + '0' * (a - 1)), int('1' + '0' * a)): num = i i = list(str(i)) sum_ = 0 for j in i: sum_ += int(j)**a if sum_ == num: print(num)
第十三题:找完数
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
import math a,b = map(int,input().split()) index = 0 for i in range(a,b+1): list1 = [1] for j in range(2,int(math.sqrt(i))+1): if i % j == 0: list1.append(j) if i//j not in list1: list1.append(i//j) list1.sort() if sum(list1) == i: index = 1 print(str(i) + ' = ' + ' + '.join(map(str,list1))) if index == 0: print('None')
第十五题:特定矩阵元素和
给定一个n×n的方阵,本题要求计算该矩阵主、副对角线上的所有元素之和。主对角线为从矩阵的左上角至右下角的连线,副对角线为从矩阵的右上角至左下角的连线。
num = int(input()) result1 = 0 data = [None] * num if num % 2 != 0: for i in range(num): data[i] = input().split() result1 += float(data[i][i]) + float(data[i][-1 - i]) acc = float(data[num // 2][num // 2]) result1 -= acc else: for i in range(num): data[i] = input().split() result1 += float(data[i][i]) + float(data[i][-1 - i]) print('%.2f' %result1)
这里注意一下矩阵中的数据类型可能是整数也可能是浮点数,所以不要用int强制转换(最后一个测试用例应该就是float类型),也可以根据输出结果保留两位小数看出~【这个可能比较蠢,所以我卡了很久】
第十九题:求矩阵的局部极大值
给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。
a,b = map(int,input().split()) data = [None] * a index = 0 for i in range(a): data[i] = input().split() for i in range(1,a-1): for j in range(1,b-1): com = int(data[i][j]) if com > int(data[i-1][j]) and com > int(data[i][j-1]) and com > int(data[i+1][j]) and com > int(data[i][j+1]): index = 1 print('{} {} {}'.format(com,i+1,j+1)) if index == 0: print('None {} {}'.format(a,b))
第二十一题:显示直角数字图形
本题目要求输入行数,输出指定行数的图形。
list1 = ['A','B','C','D','E','F','G','H','I','J'] num = int(input()) for i in range(num): result = '' for j in range(i+1): result += list1[j] print(result)
第二十三题:显示Pascal三角形
输入行数n,显示n行Pascal三角形。数字间有一个空格。每行最后一个数字后有一个空格。
Pascal三角形即杨辉三角,它的两条斜边由数字1组成的,而其余的数则是等于它肩上的两个数之和。其(n+1)行的本质为n次的二项式系数
num = int(input()) a = [] b = [] for i in range(1,num + 1): b = a[:] a = [] for j in range(1,i + 1): if j == 1 or j == i: print(1,end = ' ') a.append(1) else: print(b[j - 2] + b[j - 1],end = ' ') a.append(b[j - 2] + b[j - 1]) print('\n',end = '')
这篇关于PTA-浙大版 《Python程序设计》 第四章编程题目及答案(更新中)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门