python - Elif 的完全初学者 [Python]

标签 python if-statement

我尝试做 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/

相关文章:

python - 尝试将字符串加密为 ASCII

python - 如何停止Python中的套接字线程?

java - 将字符串转换为 LinkedList 并通过递归浏览它

linux - 变量的 IF 运算

python - 如何删除 Python 工具的 Visual Studio(2016 年 6 月)更新通知?已经安装好了

python - Collat​​z 序列以 4 结束

python - 循环遍历数据框列来进行简单的线性回归?

javascript - 我如何优化这一长行 "if"语句?

检查 "undefined"时 JavaScript 变量值被覆盖

C++ : if condition is evaluated with bad input (float) despite supposedly checking for it with cin.clear() 和 cin.ignore()