我尝试做 http://www.cplusplus.com/forum/articles/12974/ 的第一个作业
g = int(raw_input('Enter the grade you scored: '))
if g >= 90 & g <= 100:
print 'Your grade is: A'
elif g >= 80 & g < 90:
print 'Your grade is: B'
elif g >= 70 & g < 80:
print 'Your grade is: C'
elif g >= 60 & g < 70:
print 'Your grade is: D'
elif g >= 50 & g < 60:
print 'Your grade is: E'
elif g >= 0 & g <= 49:
print 'Your grade is: F'
else:
print 'You can only enter an integer within the range of 0-100.'
问题是,每当我运行这个程序时,我输入的任何大于 0 的数字都会得到:
您的成绩是:A
非常感谢任何帮助。谢谢!
最佳答案
Bi Rico 的回答既简单又正确。进一步解释一下情况:
&
运算符计算两个整数的按位与。例如,5 & 3 == 1
.&
的优先级位于比较运算符之上(例如<
和>=
)。所以a < b & c < d
实际上意味着a < (b & c) < d
.- Python 允许链式比较。例如,
a < b == c >= d
翻译成a < b and b == c and c >= d
.
将这些事实放在一起,这就是运行程序时发生的情况:
- 假设
g
被分配一个介于0
之间的整数值和100
,包含在内。 - 所以 if 测试
g >= 90 & g <= 100
意味着(g >= (90 & g)) and ((90 & g) <= 100)
. - 按位 AND 始终小于或等于两个参数(即
(a & b <= a) and (a & b <= b)
)。 - 因此
90 & g <= g
总是正确的。同样,90 & g <= 100
总是正确的,因为90 <= 100
. - 因此第一个 if 测试始终为 true,因此主体将执行,而 elif/else 子句将永远不会执行。
关于python - Elif 的完全初学者 [Python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32216392/