PTA Python 第二章 题解

# 第2章-7 产生每位数字相同的n位数

读入2个正整数A和B,1<=A<=9, 1<=B<=10,产生数字AA…A,一共B个A

输入格式: 在一行中输入A和B。

输出格式: 在一行中输出整数AA…A,一共B个A

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

1
  1,  5

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

1
11111

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

1
        3  ,4

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

1
3333
1
2
A, B = map(int, input().split(','))
print(str(A) * B)

Pass
Pass

# 第2章-8 转换函数使用 (30 分)

输入一个整数和进制,转换成十进制输出

输入格式: 在一行输入整数和进制

输出格式: 在一行十进制输出结果

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

1
45,8

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

1
37

Pass
Pass

# 第2章-10 输出华氏-摄氏温度转换表 (15 分)

输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。

温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。

输入格式: 在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。

输出格式: 第一行输出:“fahr celsius”

接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。

若输入的范围不合法,则输出"Invalid."。

输入样例1:

1
32 35

输出样例1:

1
2
3
fahr celsius
32   0.0
34   1.1

输入样例2:

1
40 30

输出样例2:

1
Invalid.
1
2
3
4
5
6
7
8
L, U = map(int, input().split())
if L <= U:
    print('fahr celsius')
    for i in range(L, U+1, 2):
        A = 5 * (i - 32) / 9
        print(i, '%5.1f' % A)
else:
    print('Invalid.')

1643711866861.png
1643711866861.png

# 第2章-11 求平方与倒数序列的部分和 (15 分)

本题要求对两个正整数m和n(m≤n)编写程序,计算序列和

1648028500706.png
1648028500706.png

输入格式: 输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。

输出格式: 在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。

输入样例:

1
5 10

输出样例:

1
sum = 355.845635
1
2
3
4
5
A, B = map(int, input().split())
Sum = 0
for i in range(A, B+1):
    Sum += i*i + 1/i
print('sum = %.6f' % Sum)

1643712476027.png
1643712476027.png

# 第2章-12 输出三角形面积和周长 (15 分)

本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area= s(s−a)(s−b)(s−c) ​ ,其中s=(a+b+c)/2。

输入格式: 输入为3个正整数,分别代表三角形的3条边a、b、c。

输出格式: 如果输入的边能构成一个三角形,则在一行内,按照

1
area = 面积; perimeter = 周长

的格式输出,保留两位小数。否则,输出

1
These sides do not correspond to a valid triangle

输入样例1:

1
5 5 3

输出样例1:

1
area = 7.15; perimeter = 13.00

输入样例2:

1
1 4 1

输出样例2:

1
These sides do not correspond to a valid triangle
1
2
3
4
5
6
7
8
9
A, B, C = map(int, input().split())
if A + B > C and B + C > A and C + A > B:
    S = (A + B + C)/2
    Area2 = S*(S-A)*(S-B)*(S-C)
    Area = pow(Area2, 0.5)
    Perimeter = A + B + C
    print('area = %.2f; perimeter = %.2f' %(Area,Perimeter) )
else:
    print('These sides do not correspond to a valid triangle')

1648024056552.png
1648024056552.png

# 第2章-14 求整数段和 (15 分)

给定两个整数A和B,输出从A到B的所有整数以及这些数的和。

输入格式: 输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。

输出格式: 首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。

输入样例:

1
-3 8

输出样例:

1
2
3
4
   -3   -2   -1    0    1
    2    3    4    5    6
    7    8
Sum = 30
1
2
3
4
5
6
7
8
9
A, B = map(int, input().split())
Sum, Times = 0, 0
for i in range(A, B+1):
    print("{:>5}".format(i), end="")
    Sum += i
    Times += 1
    if Times%5 == 0:
        print()
print("\nSum =",Sum)

部分错误,发现当 Times 为5的倍数时,会多输出一个 \n,导致格式错误。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
A, B = map(int, input().split())
Sum, Times = 0, 0
for i in range(A, B+1):
    print("{:>5}".format(i), end="")
    Sum += i
    Times += 1
    if Times%5 == 0:
        print()
if Times%5 != 0:
    print()
print("Sum =",Sum)

修改完的代码,能过,但是看着,额,不好看。

1648028298105.png
1648028298105.png

使用 Hugo 构建
主题 StackJimmy 设计