2016-06-12 69 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

应该是的,是的。尽管使用旁边的复选标记,您可以随时接受任何您想要的答案 –

相关问题