完全初学者用Elif [Python]

时间:2015-08-26 01:01:24

标签: 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

任何帮助非常感谢。谢谢!

3 个答案:

答案 0 :(得分:3)

Bi Rico的回答简单而正确。进一步解释这一情况:

  • &运算符计算两个整数的按位AND。例如,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被分配了0100之间的整数值,包括在内。
  • 因此,if-test 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-test始终为true,因此正文将执行,而elif / else子句将永远不会执行。

答案 1 :(得分:0)

你有他们的代码,但语法在Python中非常重要。你想要使用和你拥有的地方和像这样:

g = int(raw_input('Enter the grade you scored: '))
if g >= 90 and g <= 100:
   print 'Your grade is: A'
elif g >= 80 and g < 90:
   print 'Your grade is: B'
elif g >= 70 and g < 80: 
   print 'Your grade is: C'
elif g >= 60 and g < 70:
   print 'Your grade is: D'
elif g >= 50 and g < 60:
   print 'Your grade is: E' 
elif g >= 0 and g <= 49:
   print 'Your grade is: F'
else:
    print 'You can only enter an integer within the range of 0-100.'

这将以正确的方式显示您需要的内容。

答案 2 :(得分:-1)

使用正确的关键字始终很重要,因为某些事情可能会导致错误。使用而不是&amp;。