好吧,我需要写一个函数,把分数转换成分数。。。在
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????在
布尔表达式的作用是:
这意味着它正在测试}的布尔值
mod1
和{True
。在Python中,任何非零的数字都被认为是“truthy”(即bool(2) == True
;bool(0)==False) and as such your first if statement will always be triggered (unless you set
mod1and
mod2`到0)。在你可能想要的是
^{pr2}$或者,可以使用
^{3}$any
和生成器表达式:这将测试}都将导致if语句继续执行。在
mod
的所有值,看它们是否大于80,并且其中任何一个返回{那是因为这里
^{pr2}$检查}。无论您输入什么,它总是输入第一个if并将
mod1
是否不是None
,因为您刚刚用输入给它赋值,所以它确实不是{A, A
作为输出。在这实际上是在说
if (mod1) or (mod2 >= 80):
。如果mod1
有任何值,则它是True
,因此它停止检查其余部分,只执行if
部分中的块。在将其更改为
if mod1 >= 80 or mod2 >= 80:
依此类推,它将工作。在为什么它们都是一样的,这是因为你是从最高的分数往下检查,当其中一个满足了这个条件,那么两个都被设置为这个条件。逐步执行以下步骤:
^{pr2}$相关问题 更多 >
编程相关推荐