2016-06-12 97 views
-2

好吧,這是一個嘗試做的事情。變量設置爲隨機數,然後打印,然後輸入正確的輸入(可變)打印x

  1. 我正在創建一個隨機數。
  2. 正在打印它。
  3. 我提示用戶輸入打印的號碼。
  4. 然後'如果'輸入的數字=打印的數字(變量)x將發生。

好吧,我很困惑,希望你沒有。

import random 
var = random.randint(1000,9999) 
print(var) 
ask = input('Please enter pin. ') 
if ask == var : 
    print('thank you') 

然後數字打印,但是當輸入什麼都不會發生。 謝謝

+0

'input'返回一個字符串,'1111!=「1111''所以你需要強制轉換爲'int' –

+1

您的變量使用Python 2還是Python 3? – jwodder

+0

python 3,TMJ非常感謝。 –

回答

0

問題是,你的輸入是一個字符串,你比較一個int。這應該工作:

if int(ask) == var : 
    print('thank you') 

一種不同的方法是將變量轉換爲直接一個int(由Alex.S和cricket_007指出)。如果以後再次使用該變量作爲整數,這會更好。如果您想稍後使用ask作爲字符串,第一種方法會更好。再次

ask = int(input('Please enter pin. ')) 
if ask == var : 
    print('thank you') 

感謝cricket_007的指出,那非數值會崩潰的代碼:這是這樣的。爲了避免這種情況,你可以用isnumeric()功能檢查:提示的消息後

ask = input('Please enter pin. ') 
if not ask.isnumeric(): 
    print('Invalid input') 
    exit() 
ask = int(ask) 

這將退出沒有錯誤,如果用戶輸入的東西是不是數字。

+1

我認爲把var變成一個字符串是一個不容易出錯的解決方案 –

+0

是的,如果你以後再次使用該變量作爲int,肯定,但如果你想要做字符串操作,這很容易。 – Leon

+0

我基本上將'ask == var'更改爲'ask!= var'現在可以工作。我應該改變更多的代碼嗎? –

0

你有你的輸入變量轉換成一個數字:

ask = int(input('Please enter pin. '))

0

您的代碼將在Python 2.7正常工作。然而,在Python 3,你需要做到以下幾點:

if int(ask) == var: 
    print('thank you') 
+0

我基本上將'ask == var'改爲'ask!= var'現在可以工作。我正在使用3.4 –

0

建議您輸入轉換爲int的罰款,但只有當你將要輸入數字到您的輸入。否則,代碼將會出錯。

防止的辦法是開關是鑄造

if ask == str(var) : 
+0

我注意到當我輸入一個單詞時,看起來這個修改本身就足夠了 –

+0

應該是的,是的。儘管使用旁邊的複選標記,您可以隨時接受任何您想要的答案 –

相關問題