2014-02-26 127 views
0

我正在为用户输入体重的地方工作,并在程序中稍后显示。他们的体重必须在0到500之间,出于某种原因,我似乎无法让程序在正确的范围内接受任何体重。python运营商的问题

weight = raw_input("Enter your Weight: ") 

while not weight.isdigit() or weight >500 or weight<=0: 

    if not weight.isdigit(): 
     print "Invalid Number. Try Again." 
     weight = raw_input("Enter your Weight: ") 

    if weight > 500: 
     print "Invalid Number. Try Again." 
     weight = raw_input("Enter your Weight: ") 

    if weight < 1: 
     print "Invalid Number. Try Again." 
     weight = raw_input("Enter your Weight: ") 

我也试过使用范围(0,500),但似乎没有任何工作。我确信它是一个简单的解决方案,我觉得自己像个白痴一样无法得到它。

+1

原始输入返回一个字符串。您必须将其转换为int。像这样'int(raw_input(“输入你的Weight:”)' – placeybordeaux

+0

不要比较int和一个字符串:'int(raw_input(“输入你的Weight:”))' –

回答

3

您需要将输入转化为整数比较它与0和500
这里之前是你的代码,它试图投的输入作为一个整数,只有突破了无限循环的更新版本如果重量介于0和500之间(不包括)。

while True: 
    try: 
     weight = int(raw_input("Enter your Weight: ")) 
    except ValueError: 
     print "Please enter a valid number. Try Again." 
    else: 
     if 0 < weight < 500: 
      break 

     print "Invalid Number (should be between 0 and 500). Try Again." 
0

先转换为整数。

weight = int(raw_input("Enter your Weight: ")) 

while not weight.isdigit() or weight >500 or weight<=0: 

    if not weight.isdigit(): 
     print "Invalid Number. Try Again." 

    if weight > 500: 
     print "Invalid Number. Try Again." 

    if weight < 1: 
     print "Invalid Number. Try Again." 

    weight = int(raw_input("Enter your Weight: ")) 
1

变量'weight'是一个str,并且您正在碰到交叉类型比较问题。比方说,300,重量> 500评估为真。如果你之前将其转换为整数“>”它应该工作,即改变

weight > 500 

int(weight) > 500