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

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

有條件的不評估為真

有條件的不評估為真

Go
翻閱古今 2022-12-26 09:43:28
根據問題,如果成績與下一個 5 的倍數之間的差異小于 3,則將成績四舍五入到下一個 5 的倍數。如果等級值小于 38,則不會進行四舍五入,因為結果仍然是不及格等級。這是我的解決方案,def gradingStudents(grades):    for i in grades:        if (5 * round(1 + i/5) - i) < 3 and i>= 38:            print (5 * round(1 + i/5))        else:            print (i)grades_count = int(input().strip())grades = []for p in range(grades_count):    g = int(input(''))    grades.append(g)result = gradingStudents(grades)但是,在檢查輸出時我注意到 if 條件不起作用,因為輸出生成與輸入相同的等級。
查看完整描述

3 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

使用模%5 應該可以幫助你。模是除法后得到的余數。示例8 % 5=3此外,//運算符在除法后會自動為您舍入


grades = [1, 9, 37, 38, 43, 47, 49, 99, 91]

rounded_grades = [grade if grade < 38 or grade % 5 in [0, 1, 2] else 5 * (grade // 5 + 1) for grade in grades]


print(grades)

print(rounded_grades)


#Output

[1, 9, 37, 38, 43, 47, 49, 99, 91]

[1, 9, 37, 40, 45, 47, 50, 100, 91]


查看完整回答
反對 回復 2022-12-26
?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

我認為這樣的事情應該有效


def gradingStudents(grades):

  output =[]

  for g in filter(lambda x: x>38, grades):

     step = g + (5 - g % 5)

     output.append(step < 3 : g + step ? g)

  output.extend(filter(lambda x: x<=38, grades)):

  return output

# ... Your other code

print(gradingStudents(grades))


查看完整回答
反對 回復 2022-12-26
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

簡化您的方法


def finalGrade(grade, multiple_of=5, limit=38):

    if not grade < limit:

        grade = int(round(grade / multiple_of) * multiple_of)

    return grade


grades = [20, 34, 37, 38, 39, 41, 45, 48, 52]

finalGrades = [finalGrade(grade) for grade in grades]

# [20, 34, 37, 40, 40, 40, 45, 50, 50]


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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