亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將這個“學生成績”代碼壓縮成循環?

如何將這個“學生成績”代碼壓縮成循環?

瀟瀟雨雨 2021-12-21 11:06:53
我必須編寫一個接受 5 個分數并確定每個分數等效字母等級的程序。結果將以表格格式打印。我了解問題的要求以及我沒有轉述的所有其他步驟,因為它們與我的問題無關。我無法弄清楚如何將我的代碼壓縮成某種循環。我覺得我擁有的東西很多余,應該有一種方法可以濃縮它。另外,我不允許使用列表來解決這個問題。# Letter grade constantsA_SCORE = 90B_SCORE = 80C_SCORE = 70D_SCORE = 60# Gather scores from usernum1 = int(input("Enter score 1: "))if num1 >= A_SCORE:    letter1 = "A"elif num1 >= B_SCORE:    letter1 = "B"elif num1 >= C_SCORE:    letter1 = "C"elif num1 >= D_SCORE:    letter1 = "D"else:    letter1 = "F"num2 = int(input("Enter score 2: "))if num2 >= A_SCORE:    letter2 = "A"elif num2 >= B_SCORE:    letter2 = "B"elif num2 >= C_SCORE:    letter2 = "C"elif num2 >= D_SCORE:    letter2 = "D"else:    letter2 = "F"num3 = int(input("Enter score 3: "))if num3 >= A_SCORE:    letter3 = "A"elif num3 >= B_SCORE:    letter3 = "B"elif num3 >= C_SCORE:    letter3 = "C"elif num3 >= D_SCORE:    letter3 = "D"else:    letter3 = "F"num4 = int(input("Enter score 4: "))if num4 >= A_SCORE:    letter4 = "A"elif num4 >= B_SCORE:    letter4 = "B"elif num4 >= C_SCORE:    letter4 = "C"elif num4 >= D_SCORE:    letter4 = "D"else:    letter4 = "F"num5 = int(input("Enter score 5: "))if num5 >= A_SCORE:    letter5 = "A"elif num5 >= B_SCORE:    letter5 = "B"elif num5 >= C_SCORE:    letter5 = "C"elif num5 >= D_SCORE:    letter5 = "D"else:    letter5 = "F"# Print resultsprint("score 1: \t\t" + str(num1) + "\t\t" + letter1)print("score 2: \t\t" + str(num2) + "\t\t" + letter2)print("score 3: \t\t" + str(num3) + "\t\t" + letter3)print("score 4: \t\t" + str(num4) + "\t\t" + letter4)print("score 5: \t\t" + str(num5) + "\t\t" + letter5)這是顯示內容的示例。它的格式正確,我剛剛排除了表格標題。Enter score 1: 75Enter score 2: 88Enter score 3: 91Enter score 4: 80Enter score 5: 85score 1:        75      Cscore 2:        88      Bscore 3:        91      Ascore 4:        80      Bscore 5:        85      B
查看完整描述

3 回答

?
開心每一天1111

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)

另請注意,無需將整數轉換為字符串。打印函數隱式地執行此操作


查看完整回答
反對 回復 2021-12-21
?
ABOUTYOU

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


查看完整回答
反對 回復 2021-12-21
?
叮當貓咪

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



查看完整回答
反對 回復 2021-12-21
  • 3 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號