
写在前面:笔者在本文给出的PTA编程题答案仅供大家交流、学习,不保证100%正确性,不是唯一解,不一定是最优解。

输入2个正整数lower和upper(-20<=lower<=upper<=50),表示摄氏范围。请输出一张取值范围为[lower,upper]、 且每次增加2摄氏度的摄氏-华氏温度转换表。温度转换的计算公式: F=C×1.8+32 其中:C表示摄氏温度,F表示华氏温度。
输入格式:
在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。
输出格式:
第一行输出:"celsius□□□□fahr"
接着每行输出一个摄氏温度celsius(整数)与一个华氏温度fahr(占据14个字符宽度,靠右对齐,保留1位小数)。
若输入的范围不合法,则输出"Invalid."。
输入样例1:
在这里给出一组输入。例如:
2 9
输出样例1:
在这里给出相应的输出。例如:
celsius fahr
2 35.6
4 39.2
6 42.8
8 46.4
输入样例2:
在这里给出一组输入。例如:
2 51
输出样例2:
在这里给出相应的输出。例如:
Invalid.
a,b=map(int,input().split())
if a<-20 or b>50:
print('Invalid.')
else:
print('celsius fahr')
for i in range(a,b+1,2):
print(i,'{:>13}'.format(i*1.8+32))

给定不超过9的正整数a,给定正整数n,n是偶数,4<=n<=18,要求编写程序求aa+aaaa+aaaaaa+⋯+aa⋯a(n个a)之和。
输入格式:
在一行中给出不超过9的正整数a和n。
输出格式:
在一行中输出对应的和。
输入样例:
在这里给出一组输入。例如:
1 4
输出样例:
在这里给出相应的输出。例如:
1122
a,n=map(int,input().split())
print(sum([int(str(a)*x) for x in range(2,n+1,2)]))

本题要求对两个正整数m和n(m≤n)编写程序,计算序列近似和。近似和定义为小于序列和的最大整数。(提示:用floor函数)
m2+1/m+(m+1)2+1/(m+1)+⋯+n2+1/n。
输入格式:
输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。
输出格式:
在一行中按照“sum ≈ S”的格式输出近似和S。
输入样例:
在这里给出一组输入。例如:
5 10
输出样例:
在这里给出相应的输出。例如:
sum ≈ 355
from math import floor
m,n=map(int,input().split())
print(f'sum ≈ {floor(sum([x**2+1/x for x in range(m,n+1)]))}')

计算函数f(x): f(x) =

输入格式:
在一行输入x, x>0。
输出格式:
在一行输出结果,函数值输出保留3位小数。
输入样例1:
在这里给出一组输入。例如:
3.64
输出样例1:
在这里给出相应的输出。例如:
f(3.64)=-3.907
输入样例2:
在这里给出一组输入。例如:
20
输出样例2:
在这里给出相应的输出。例如:
f(20.0)=1212904.080
import math
x=float(input())
print(f'f({x})={math.sin(math.radians(35))+(math.e**x-15*x)/math.sqrt(x**4+1)-math.log(7*x):.3f}')

为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。
输入格式:
输入在一行中给出非负实数x。
输出格式:
在一行输出应交的水费,精确到小数点后2位。
输入样例1:
12
输出样例1:
16.00
输入样例2:
16
输出样例2:
22.50
x=float(input())
y=4*x/3 if x<=15 else 2.5*x-17.5
print(f'{y:.2f}')

输入正整数(1<=n<=7),输出指定图形。(提示:用*运算符)
输入格式:
输入正整数n。
输出格式:
输出有n行的图形。
输入样例1:
在这里给出一组输入。例如:
1
输出样例1:
在这里给出相应的输出。例如:
*
输入样例2:
在这里给出一组输入。例如:
3
输出样例:
在这里给出相应的输出。例如:
*
* *
* * *
for i in range(1,int(input())+1):
print(*'*'*i,end=' ')
print()

中小学生每个学期都要体检,要量身高,因为身高可以反映孩子的生长状况。现在,一个班的身高已经量好了,请输出其中超过平均身高的那些身高。程序的输入为一行数据,其中以空格分隔,每个数据都是一个正整数。程序要输出那些超过输入的正整数的平均数的输入值,每个数后面有一个空格,输出的顺序和输入的相同。
输入格式:
在一行输入中一个班的身高值,以空格分隔。
输出格式:
在一行输出超过输入的平均数的输入值,以空格分隔。
输入样例:
在这里给出一组输入。例如:
143 174 119 127 117 164 110 128
输出样例:
在这里给出相应的输出。例如:
143 174 164
lst=list(map(int,input().split()))
print(*[x for x in lst if x>sum(lst)/len(lst)],end=' ')

输入一个字符串,再输入两个字符,求这两个字符在字符串中的索引。
输入格式:
第一行输入字符串 第二行输入两个字符,用空格分开。
输出格式:
从右向左输出字符和索引,即下标最大的字符最先输出。每行一个。
输入样例:
在这里给出一组输入。例如:
pmispsissippi
s p
输出样例:
在这里给出相应的输出。例如:
11 p
10 p
8 s
7 s
5 s
4 p
3 s
0 p
s=input()
a=input().split()
for i in range(len(s)-1,-1,-1):
if s[i] in a:
print(i,s[i])

对于给定的正整数N,求它的位数及其各位数字之和。(提示:把整数转换成字符串,列表,用sum和len函数)
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。
输入样例:
在这里给出一组输入。例如:
456
输出样例:
在这里给出相应的输出。例如:
3 15
n=input()
print(len(n),sum([int(x) for x in n]))

本题要求编写程序,将输入字符串中的大写英文字母按以下对应规则替换,其他字符不变。(提示:转换表用元组实现)
原字母→对应字母
A→Z
B→Y
C→X
D→W
...→...
X→C
Y→B
Z→A
输入格式:
在一行中输入字符串
输出格式:
在一行中给出替换完成后的字符串。
输入样例:
在这里给出一组输入。例如:
This is a pen.
输出样例:
在这里给出相应的输出。例如:
Ghis is a pen.
n=input()
s=''
for i in n:
if 65<=ord(i)<=90:
s+=chr(155-ord(i))
else:
s+=i
print(s)