2014-02-26 70 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