浙江大学Python PTA编程题 个人题解(二)
車厘子糖
2022年06月25日 07:52
收录于文集
共5篇

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

7-9 输出摄氏-华氏温度转换表

输入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.

代码块
text/x-python
自动换行
复制代码
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))
复制成功

7-10 偶数位特殊序列和

给定不超过9的正整数a,给定正整数n,n是偶数,4<=n<=18,要求编写程序求aa+aaaa+aaaaaa+⋯+aa⋯a(n个a)之和。

输入格式:

在一行中给出不超过9的正整数a和n。

输出格式:

在一行中输出对应的和。

输入样例:

在这里给出一组输入。例如:

1 4

输出样例:

在这里给出相应的输出。例如:

1122

代码块
text/x-python
自动换行
复制代码
a,n=map(int,input().split())
print(sum([int(str(a)*x) for x in range(2,n+1,2)]))
复制成功

7-11 求平方与倒数序列的近似和

本题要求对两个正整数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

代码块
text/x-python
自动换行
复制代码
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)]))}')
复制成功

7-12 计算函数f(x)

计算函数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

代码块
text/x-python
自动换行
复制代码
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}')
复制成功

7-13 分段计算居民水费

为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。

输入格式:

输入在一行中给出非负实数x。

输出格式:

在一行输出应交的水费,精确到小数点后2位。

输入样例1:

12

输出样例1:

16.00

输入样例2:

16

输出样例2:

22.50

代码块
text/x-python
自动换行
复制代码
x=float(input())
y=4*x/3 if x<=15 else 2.5*x-17.5
print(f'{y:.2f}')
复制成功

7-14 输出指定图形

输入正整数(1<=n<=7),输出指定图形。(提示:用*运算符)

输入格式:

输入正整数n。

输出格式:

输出有n行的图形。

输入样例1:

在这里给出一组输入。例如:

1

输出样例1:

在这里给出相应的输出。例如:

*

输入样例2:

在这里给出一组输入。例如:

3

输出样例:

在这里给出相应的输出。例如:

*

* *

* * *

代码块
text/x-python
自动换行
复制代码
for i in range(1,int(input())+1):
    print(*'*'*i,end=' ')
    print()
复制成功

7-19 大于身高的平均值

中小学生每个学期都要体检,要量身高,因为身高可以反映孩子的生长状况。现在,一个班的身高已经量好了,请输出其中超过平均身高的那些身高。程序的输入为一行数据,其中以空格分隔,每个数据都是一个正整数。程序要输出那些超过输入的正整数的平均数的输入值,每个数后面有一个空格,输出的顺序和输入的相同。

输入格式:

在一行输入中一个班的身高值,以空格分隔。

输出格式:

在一行输出超过输入的平均数的输入值,以空格分隔。

输入样例:

在这里给出一组输入。例如:

143 174 119 127 117 164 110 128

输出样例:

在这里给出相应的输出。例如:

143 174 164

代码块
text/x-python
自动换行
复制代码
lst=list(map(int,input().split()))
print(*[x for x in lst if x>sum(lst)/len(lst)],end=' ')
复制成功

7-20 输出字母在字符串中位置索引

输入一个字符串,再输入两个字符,求这两个字符在字符串中的索引。

输入格式:

第一行输入字符串 第二行输入两个字符,用空格分开。

输出格式:

从右向左输出字符和索引,即下标最大的字符最先输出。每行一个。

输入样例:

在这里给出一组输入。例如:

pmispsissippi

s p

输出样例:

在这里给出相应的输出。例如:

11 p

10 p

8 s

7 s

5 s

4 p

3 s

0 p

代码块
text/x-python
自动换行
复制代码
s=input()
a=input().split()
for i in range(len(s)-1,-1,-1):
    if s[i] in a:
        print(i,s[i])
复制成功

7-21 求整数的位数及各位数字之和

对于给定的正整数N,求它的位数及其各位数字之和。(提示:把整数转换成字符串,列表,用sum和len函数)

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。

输入样例:

在这里给出一组输入。例如:

456

输出样例:

在这里给出相应的输出。例如:

3 15

代码块
text/x-python
自动换行
复制代码
n=input()
print(len(n),sum([int(x) for x in n]))
复制成功

7-22 字符替换

本题要求编写程序,将输入字符串中的大写英文字母按以下对应规则替换,其他字符不变。(提示:转换表用元组实现)

原字母→对应字母

A→Z

B→Y

C→X

D→W

...→...

X→C

Y→B

Z→A

输入格式:

在一行中输入字符串

输出格式:

在一行中给出替换完成后的字符串。

输入样例:

在这里给出一组输入。例如:

This is a pen.

输出样例:

在这里给出相应的输出。例如:

Ghis is a pen.

代码块
text/x-python
自动换行
复制代码
n=input()
s=''
for i in n:
    if 65<=ord(i)<=90:
        s+=chr(155-ord(i))
    else:
        s+=i
print(s)
复制成功