Python:将分数转换为成绩参数

2024-04-25 11:43:27 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我需要写一个函数,把分数转换成分数。。。在

name = input("Hello, what is your name?\n")
print("Welcome", name)
mod1 = int(input("Please enter your module 1 result.\n"))
mod2 = int(input("Thank you, please enter your module 2 result.\n"))
print("Great")
grade = 0
grade2 = 0
if mod1 or mod2  >= 80:
    grade = "A"
    grade2 = "A"
elif mod1 or mod2  >=70:
    grade = "B"
    grade2 = "B"
elif mod1 or mod2 >=60:
    grade = "C"
    grade2 = "D"
elif mod1 or mod2 >=50:
    grade = "D"
    grade2 = "D"
elif mod1 or mod2 >=40:
    grade = "E"
    grade2 = "E"
elif mod1 or mod2 >=30:
    grade = "F"
    grade2 = "F"
elif mod1 or mod2 >=20:
    grade= "G"
    grade2= "G"
elif mod1 or mod2 >=10:
    grade= "U"
    grade2= "U"

print(grade, grade2)

每当我运行这个结果是:A,A????在


Tags: ornameinputyourresult分数intgrade
3条回答

布尔表达式的作用是:

if (mod1) or (mod2 >= 80):
    # ....

这意味着它正在测试mod1和{}的布尔值True。在Python中,任何非零的数字都被认为是“truthy”(即bool(2) == True;bool(0)==False) and as such your first if statement will always be triggered (unless you setmod1andmod2`到0)。在

你可能想要的是

^{pr2}$

或者,可以使用any和生成器表达式:

^{3}$

这将测试mod的所有值,看它们是否大于80,并且其中任何一个返回{}都将导致if语句继续执行。在

Whenever I run this the results are : A,A ????

那是因为这里

^{pr2}$

检查mod1是否不是None,因为您刚刚用输入给它赋值,所以它确实不是{}。无论您输入什么,它总是输入第一个if并将A, A作为输出。在

if mod1 or mod2  >= 80:

这实际上是在说if (mod1) or (mod2 >= 80):。如果mod1有任何值,则它是True,因此它停止检查其余部分,只执行if部分中的块。在

将其更改为if mod1 >= 80 or mod2 >= 80:依此类推,它将工作。在

为什么它们都是一样的,这是因为你是从最高的分数往下检查,当其中一个满足了这个条件,那么两个都被设置为这个条件。逐步执行以下步骤:

^{pr2}$

相关问题 更多 >