PTA 浙大版《Python 程序設計》題目集 第2章題解

第2章-1 計算 11+12+13+…+m (30分)

輸入一個正整數m(20<=m<=100),計算 11+12+13+…+m 的值。
輸入格式:
在一行輸入一個正整數m。
輸出格式:
在一行中按照格式“sum = S”輸出對應的和S.
輸入樣例:
在這裏給出一組輸入。例如:

90

輸出樣例:
在這裏給出相應的輸出。例如:

sum = 4040

代碼:

m = eval(input())
S = 0
for i in range(11,m+1):
    S += i
print("sum =",S)

第2章-2 計算分段函數[1] (10分)

本題目要求計算下列分段函數f(x)的值:
在這裏插入圖片描述
輸入格式:
輸入在一行中給出實數x。
輸出格式:
在一行中按“f(x) = result”的格式輸出,其中x與result都保留一位小數。

輸入樣例1: 輸出樣例1:
10 f(10.0) = 0.1
輸入樣例2: 輸出樣例2:
0 f(0.0) = 0.0

代碼:

x = eval(input())
if x == 0 :
    print("f(0.0) = 0.0")
else:
    print("f({:.1f}) = {:.1f}".format(x,1 / x))

第2章-3 階梯電價 (15分)

爲了提倡居民節約用電,某省電力公司執行“階梯電價”,安裝一戶一表的居民用戶電價分爲兩個“階梯”:月用電量50千瓦時(含50千瓦時)以內的,電價爲0.53元/千瓦時;超過50千瓦時的,超出部分的用電量,電價上調0.05元/千瓦時。請編寫程序計算電費。
輸入格式:
輸入在一行中給出某用戶的月用電量(單位:千瓦時)。
輸出格式:
在一行中輸出該用戶應支付的電費(元),結果保留兩位小數,格式如:“cost = 應付電費值”;若用電量小於0,則輸出"Invalid Value!"。

輸入樣例1: 輸出樣例1:
10 cost = 5.30
輸入樣例2: 輸出樣例2:
100 cost = 55.50

代碼:

a = eval(input())
if a < 0 :
    print("Invalid Value!")
else :
    if a <= 50:
        cost = a * 0.53
    else:
        cost = 0.53 * 50 + 0.58 * (a - 50)
    print("cost = %.2f"%cost)

第2章-4 特殊a串數列求和 (20分)

給定兩個均不超過9的正整數a和n,要求編寫程序求a+aa+aaa++⋯+aa⋯a(n個a)之和。
輸入格式:
輸入在一行中給出不超過9的正整數a和n。
輸出格式:
在一行中按照“s = 對應的和”的格式輸出。
輸入樣例:

2 3

輸出樣例:

s = 246

代碼:

a,n = input().split()
s = 0
for i in range(1,eval(n)+1):
    s += eval(a*i)
print("s = {:d}".format(s))
a,n = input().split()
print("s = {:d}".format(sum([int(a*i) for i in range(1,eval(n)+1)])))

第2章-5 求奇數分之一序列前N項和 (15分)

本題要求編寫程序,計算序列 1 + 1/3 + 1/5 + … 的前N項之和。
輸入格式:
輸入在一行中給出一個正整數N。
輸出格式:
在一行中按照“sum = S”的格式輸出部分和的值S,精確到小數點後6位。題目保證計算結果不超過雙精度範圍。
輸入樣例:

23

輸出樣例:

sum = 2.549541

代碼:

n = int(input())
s = 0
for i in range(1,2*n,2):
    s += 1 / i
print("sum = %.6f"%s) 
n = int(input())
print("sum = {:.6f}".format(sum([1/i for i in range(1,2*n,2)]))) 

第2章-6 求交錯序列前N項和 (15分)

本題要求編寫程序,計算交錯序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N項之和。
輸入格式:
輸入在一行中給出一個正整數N。
輸出格式:
在一行中輸出部分和的值,結果保留三位小數。
輸入樣例:

5

輸出樣例:

0.917

代碼:

n = int(input())
s = 0
for i in range(1,n+1):
    s += i/(2*i-1)*pow(-1,i-1)
print("%.3f"%s) 

第2章-7 產生每位數字相同的n位數 (30分)

讀入2個正整數A和B,1<=A<=9, 1<=B<=10,產生數字AA…A,一共B個A
輸入格式:
在一行中輸入A和B。
輸出格式:
在一行中輸出整數AA…A,一共B個A
輸入樣例1:
在這裏給出一組輸入。例如:

1,  5

輸出樣例1:
在這裏給出相應的輸出。例如:

11111

輸入樣例2:
在這裏給出一組輸入。例如:

3  ,4

輸出樣例2:
在這裏給出相應的輸出。例如:

3333

代碼:

a,b = map(int,input().split(','))
print(str(a)*b)

第2章-8 轉換函數使用 (30分)

輸入一個整數和進制,轉換成十進制輸出
輸入格式:
在一行輸入整數和進制
輸出格式:
在一行十進制輸出結果
輸入樣例:
在這裏給出一組輸入。例如:

45,8

輸出樣例:
在這裏給出相應的輸出。例如:

37 

代碼:

a,b=input().split(",")
print(int(a,eval(b)))

第2章-9 比較大小 (10分)

本題要求將輸入的任意3個整數從小到大輸出。
輸入格式:
輸入在一行中給出3個整數,其間以空格分隔。
輸出格式:
在一行中將3個整數從小到大輸出,其間以“->”相連。
輸入樣例:

4 2 8

輸出樣例:

2->4->8

代碼:

print(*sorted(map(int,input().split())),sep="->")

第2章-10 輸出華氏-攝氏溫度轉換表 (15分)

輸入2個正整數lowerupperlower≤upper≤100),請輸出一張取值範圍爲[lowerupper]、且每次增加2華氏度的華氏-攝氏溫度轉換表。

溫度轉換的計算公式:C=5×(F−32)/9,其中:C表示攝氏溫度,F表示華氏溫度。
輸入格式:
在一行中輸入2個整數,分別表示lowerupper的值,中間用空格分開。
輸出格式:
第一行輸出:“fahr celsius”
接着每行輸出一個華氏溫度fahr(整型)與一個攝氏溫度celsius(佔據6個字符寬度,靠右對齊,保留1位小數)。
若輸入的範圍不合法,則輸出"Invalid."。

輸入樣例1:

32 35

輸出樣例1:

fahr celsius
32   0.0
34   1.1

輸入樣例2:

40 30

輸出樣例2:

Invalid.

代碼:

a,b=map(int,input().split())
if(a>b):
    print("Invalid.")
else:
    print("fahr celsius")
    i = a
    while i <= b:
        print("{:d}{:>6.1f}".format(i,5*(i-32)/9))
        i += 2


第2章-11 求平方與倒數序列的部分和 (15分)

本題要求對兩個正整數m和n(m≤n)編寫程序,計算序列和m​2​​+1/m+(m+1)​2​​+1/(m+1)+⋯+n​2​​+1/n。
輸入格式:
輸入在一行中給出兩個正整數m和n(m≤n),其間以空格分開。
輸出格式:
在一行中按照“sum = S”的格式輸出部分和的值S,精確到小數點後六位。題目保證計算結果不超過雙精度範圍。
輸入樣例:

5 10

輸出樣例:

sum = 355.845635

代碼:

m,n = map(int,input().split(" "))
s = 0
for i in range(m,n+1):
  s += i**2 + 1/i
print("sum = %.6f"%s)
m,n = map(int,input().split(" "))
print("sum = %.6f"%sum([i**2+1/i for i in range(m,n+1)]))

第2章-12 輸出三角形面積和周長 (15分)

本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。注意:在一個三角形中, 任意兩邊之和大於第三邊。三角形面積計算公式:area=√​s(s−a)(s−b)(s−c)​​​,其中s=(a+b+c)/2。
輸入格式:
輸入爲3個正整數,分別代表三角形的3條邊a、b、c。
輸出格式:
如果輸入的邊能構成一個三角形,則在一行內,按照

area = 面積; perimeter = 周長

的格式輸出,保留兩位小數。否則,輸出

These sides do not correspond to a valid triangle

輸入樣例1:

5 5 3

輸出樣例1:

area = 7.15; perimeter = 13.00

輸入樣例2:

1 4 1

輸出樣例2:

These sides do not correspond to a valid triangle

代碼:

a,b,c = map(int,input().split(" "))
s = sum((a,b,c)) / 2
if (a+b > c) and (a+c>b) and (b+c>a):
  print("area = {:.2f}; perimeter = {:.2f}".format(pow(s*(s-a)*(s-b)*(s-c),0.5),sum((a,b,c))))
else:
  print("These sides do not correspond to a valid triangle")

第2章-13 分段計算居民水費 (10分)

爲鼓勵居民節約用水,自來水公司採取按用水量階梯式計價的辦法,居民應交水費y(元)與月用水量x(噸)相關:當x不超過15噸時,y=4x/3;超過後,y=2.5x−17.5。請編寫程序實現水費的計算。
輸入格式:
輸入在一行中給出非負實數x。
輸出格式:
在一行輸出應交的水費,精確到小數點後2位。

輸入樣例1: 輸出樣例1:
12 16.00
輸入樣例2: 輸出樣例2:
16 22.50

代碼:

x = eval(input())
if x <= 15:
  print("%.2f"%(4*x/3))
else:
  print("%.2f"%(2.5*x-17.5))

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

給定兩個整數A和B,輸出從A到B的所有整數以及這些數的和。
輸入格式:
輸入在一行中給出2個整數A和B,其中−100≤A≤B≤100,其間以空格分隔。
輸出格式:
首先順序輸出從A到B的所有整數,每5個數字佔一行,每個數字佔5個字符寬度,向右對齊。最後在一行中按Sum = X的格式輸出全部數字的和X。
輸入樣例:

-3 8

輸出樣例:

   -3   -2   -1    0    1
    2    3    4    5    6
    7    8
Sum = 30

代碼:

a,b = map(int,input().split(" "))
s,c = 0,0
for i in range(a,b+1):
  s += i
  c += 1
  print("{:>5d}".format(i),end="")
  while c%5 == 0:
    print("")
    break
if c%5 == 0:
    print("Sum =",s)
else:
    print("\nSum =",s)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章