python题目集,源于学校老师布置在pta上的题目,博主用来复习的
6-1 缩写词
缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。
函数接口定义:
acronym(phrase);
phrase是短语参数,返回短语的缩写词
裁判测试程序样例:
/* 请在这里填写答案 */
phrase=input()
print(acronym(phrase))
输入样例:
central processing unit
输出样例:
CPU
思路:
输入的字符串使用upper()全部转为大写形式,再使用split()按空格分割;
for循环,取分割后每个字符串下标为0的字符拼接,最后返回
代码:
def acronym(phrase):
phrase = phrase.upper().split()
res = ""
for i in range(len(phrase)):
x = phrase[i][0]
res += x
return res
6-2 求多项式的值
一元多项式可以用列表表示。如p(x)=1+3x+9
x
4
x^4
x4
,可以表示成列表[1,3,0,0,9]。输入列表表示的多项式和x的值,求多项式的值。
函数接口定义:
在这里描述函数接口。例如:
value(lst,x)
lst表示多项式,x代表具体的值。
裁判测试程序样例:
/* 请在这里填写答案 */
lst=eval(input())
y=float(input())
print(“{:.1f}”.format(polyvalue(lst,y)))
输入样例:
在这里给出一组输入。例如:
[1,3,0,0,9]
1
输出样例:
在这里给出相应的输出。例如:
13.0
思路:
按题意模拟
代码:
def polyvalue(lst, y):
res = 0
for i in range(len(lst)):
res += lst[i] * (y ** i)
return res
6-3 使用函数求素数和
使用函数求素数和
prime§, 其中函数prime当用户传入参数p为素数时返回True,否则返回False.
PrimeSum(m,n),函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数1<=m<n。
函数接口定义:
在这里描述函数接口:
prime§,返回True表示p是素数,返回False表示p不是素数
PrimeSum(m,n),函数返回素数和
裁判测试程序样例:
/* 请在这里填写答案 */
m,n=input().split()
m=int(m)
n=int(n)
print(PrimeSum(m,n))
输入样例:
在这里给出一组输入。例如:
1 10
输出样例:
在这里给出相应的输出。例如:
17
思路:
注意点:判断素数的时候,注意值为1和2的情况
代码:
def prime(p):
if p == 1: return False
if p == 2: return True
for i in range(2, p):
if p % i == 0:
return False
return True
def PrimeSum(m,n):
res = 0
for i in range(m, n+1):
if prime(i):
res += i
return res
6-4 浮点数的十进制转二进制
本题要求实现一个函数,将十进制浮点数转换成二进制浮点数(只考虑正数),例如:十进制浮点数0.2转换为二进制浮点数为:0b0.001100110011001100110011001100110011001100110011001101。
转换规则如下:
整数部分采用“除2取余,逆向取值”的方法;
小数部分则乘2取整,直到余下的小数为0或者满足精度要求为止,然后顺序取值(即最先得到的整数为最高位,最后得到的整数为最低位)。
例如:
10-2.webp
所以,最终结果就是:11 1010.101。
函数接口定义:
def dec2bin(dec_num):
其中 dec_num 是用户传入的十进制浮点数,返回对应的二进制浮点数字符串。
裁判测试程序样例:
/* 你的代码将被嵌在这里 */
if name == ‘main’:
dec_num = eval(input())
bin_num = dec2bin(dec_num)
print(bin_num)
输入样例:
在这里给出一组输入。例如:
0.1
输出样例:
在这里给出相应的输出。例如:
0b0.0001100110011001100110011001100110011001100110011001101
思路:
整数和小数分开计算;
整数部分可以使用bin(),直接得到整数的二进制形式
小数部分需要不断*2, 取其整数值,直到小数点后值为0时停止
代码:
def dec2bin(dec_num):
res = ""
integer = int(dec_num)
res += bin(integer)
if integer == dec_num:
return res
decimal = dec_num - integer
res += "."
while(True):
if decimal == 0:
break
else:
x = decimal * 2
res += str(int(x))
decimal = x - int(x)
return res
6-5 打印指定范围内的全部回文素数
回文素数是指一个数既是素数又是回文数,例如131既是素数又是回文数。请实现下述两个函数,帮助测试程序完成如下功能:从键盘输入正整数N, 打印从1 ~ N(包含N)的全部回文素数,一行一个。
函数接口定义:
def isPrime(num):
def reverseNumber(num):
isPrime()用于判断整数num是否是素数,是返回True, 否则返回False.
reverseNumber()用于返回整数num的反向数,321的反向数为123, 320的反向数为23。
裁判测试程序样例:
N = int(input())
for n in range(1,N+1):
if isPrime(n) and reverseNumber(n) == n:
print(n)
输入样例:
400
输出样例:
2
3
5
7
11
101
131
151
181
191
313
353
373
383
思路:
判断素数部分注意1和2两个值
反向数部分,不能直接使用reversed(),因为320的反向数为23;采用不断%10、/10的方法得到每一位的数,再通过原res*10 + 新一位的数得到新res的值
代码:
def isPrime(num):
if num == 1:
return False
elif num == 2:
return True
else:
for i in range(2, num):
if num % i == 0:
return False
return True
def reverseNumber(num):
res = 0
while True:
if int(num) == 0:
break
res = res * 10 + (int(num % 10))
num = int(num / 10)
return res