2013-02-27 51 views
0

所以我似乎無法得到這個。如果沒有'while'循環,這段代碼可以正常工作,但只要我應用循環就會停止正常工作。由於某種原因,它將x當作一個字符串來處理。就像x是2一樣,它會將y打印爲'2222'而不是16個。我仍然對此有所瞭解,有人可以告訴我爲什麼?謝謝!雖然Python中的循環將整數轉換爲字符串?

go = 'y' 

while go == 'y': 

    print('enter x') 
    x = input() 

    y = x * 4 

    print(y) 
print('go again?') 

go = input() 

回答

1

Python 3的input函數總是返回一個字符串。這是從Python 2的變化,其中input根據用戶輸入的內容返回不同種類的Python對象。 Python 3的版本相當於Python 2的raw_input

考慮到這種背景,修復代碼很容易。只需調用int構造函數即可將您的字符串轉換爲整數。或者,如果您要支持非整數值(如1.4),請改爲使用float

另外,由於您的代碼目前在問題中已格式化,因此它具有無限循環。您的邏輯是否真的在頂層更改go變量?如果是這樣,在循環過程中永遠不會改變,這將永遠運行。

+1

謝謝Blckknight!我現在知道了,我只是用'x = int(input())'。我看到了這個東西哈哈。我只是不明白爲什麼相同的代碼在while循環之外工作... – user2113766 2013-02-27 03:55:20

0

這實際上取決於你的python版本。如果找到一個字符串,input會自動將您的字符串轉換爲整數。爲了防止這種情況,請在python <中使用raw_input函數3.對於Python 3及以上版本,我相信這是默認行爲。