3 回答

TA貢獻1836條經驗 獲得超13個贊
是否沒有家庭作業限制以完全阻止列表并以艱苦的方式進行工作。
我能想象的最好的縮短代碼將是一個函數:
# Letter grade constants
A_SCORE = 90
B_SCORE = 80
C_SCORE = 70
D_SCORE = 60
# Gather scores from user
def getscore(num):
if num >= A_SCORE:
return "A"
elif num >= B_SCORE:
return "B"
elif num >= C_SCORE:
return "C"
elif num >= D_SCORE:
return "D"
else:
return "F"
num1 = int(input("Enter score 1: "))
num2 = int(input("Enter score 2: "))
num3 = int(input("Enter score 3: "))
num4 = int(input("Enter score 4: "))
num5 = int(input("Enter score 5: "))
letter1 = getscore(num1)
letter2 = getscore(num2)
letter3 = getscore(num3)
letter4 = getscore(num4)
letter5 = getscore(num5)
# Print results
print("score 1: \t\t" + num1 + "\t\t" + letter1)
print("score 2: \t\t" + num2 + "\t\t" + letter2)
print("score 3: \t\t" + num3 + "\t\t" + letter3)
print("score 4: \t\t" + num4 + "\t\t" + letter4)
print("score 5: \t\t" + num5 + "\t\t" + letter5)
另請注意,無需將整數轉換為字符串。打印函數隱式地執行此操作

TA貢獻1812條經驗 獲得超5個贊
您可以使用bisect模塊來獲取成績。在這里,get_score將采用數字等級并返回字母等級。
from bisect import bisect
def get_score(A):
i = bisect([60, 70, 80, 90], A)
return 'FDCBA'[i]
mm = []
for i in range(5):
mm += [input('Enter score {}: '.format(i))]
for m in mm:
print('score {}: {} {}'.format(i, m, get_score(int(m))))
#Outputs
Enter score 0: 75
Enter score 1: 88
Enter score 2: 91
Enter score 3: 80
Enter score 4: 85
score 4: 75 C
score 4: 88 B
score 4: 91 A
score 4: 80 B
score 4: 85 B

TA貢獻1776條經驗 獲得超12個贊
您的代碼是使用循環的教科書案例。每當您發現自己編寫了充滿命令的重復代碼,每次只更改次要細節時,看看是否可以使用循環:
A_SCORE = 90
B_SCORE = 80
C_SCORE = 70
D_SCORE = 60
scores = []
grades = []
for n in range(1, 6):
grade = int(input("Enter score {}: ".format(n)))
grades.append(grade)
if grade >= A_SCORE:
scores.append('A')
elif grade >= B_SCORE:
scores.append('B')
elif grade >= C_SCORE:
scores.append('C')
elif grade >= D_SCORE:
scores.append('D')
else:
scores.append('F')
for n, (score, grade) in enumerate(zip(scores, grades), 1):
print("score {}: \t\t".format(n) + str(grade) + "\t\t" + score)
輸出:
Enter score 1: 75
Enter score 2: 88
Enter score 3: 91
Enter score 4: 80
Enter score 5: 85
score 1: 75 C
score 2: 88 B
score 3: 91 A
score 4: 80 B
score 5: 85 B
添加回答
舉報