2016-03-14 22 views
1

爲什麼下面的代碼會產生無限循環?如果我硬編碼y的值等於10,它不會永遠持續下去,但是如果我通過用戶輸入輸入10,它就會執行。Python - 用於確定while循環中的條件的用戶輸入

x = 0 
y = raw_input("Enter a Number: ") 

while x <= y: 
    x = x + 1 
    if x %2 == 0: 
     print x 
    else: 
     print "odd" 
+0

使用'而X <= INT(Y): '。 'raw_input()'返回一個字符串,而不是一個整數。 – zondo

+0

@vaultah,它不完全是重複的。提交者根本不知道'raw_input()'無論輸入如何都返回字符串。 –

+1

另一個愚蠢的目標:[我怎樣才能讀取Python中的整數輸入?](http://stackoverflow.com/q/20449427/2301450) – vaultah

回答

2

您可能想要將y值(現在是一個字符串)轉換爲數字。

例如像:

y = int(raw_input("Enter a number: ")) 
+0

此外,而不是使用'while x <= y:',您可以使用'對於範圍內的x(0,y + 1):' –

+0

我覺得他們應該爲這類問題發放鄧斯徽章。我現在正在面對現實。謝謝! – staredecisis

0

簡釋上@ SiggyF的答案,修改代碼以這種擺脫不必要的行:

y = int(raw_input("Enter a number: ")) 
for x in range(0, y+1): 
    if x % 2 == 0: 
     print(x) 
    else: 
     print("odd")