2

在 python 2.7 中,我正在尝试创建一个程序,该程序将生成一个介于 100000 和 999999999 之间的随机数,然后将其发送到用户电子邮件。到目前为止,它创建了一个随机数,然后将其发送到用户的电子邮件,但是当用户输入他们的代码时,它总是打印不正确。我怎样才能解决这个问题?

    code = random.randrange(100000, 99999999)

    entry = getpass.getpass('Code: ')
    if entry == code:   
        print 'Welcome!'
    else:
        print 'Incorrect!'
4

2 回答 2

5

您正在将 int 对象(由 random.randrange 生成)与 str 对象(由 getpass.getpass 返回)进行比较;产量总是假的。

>>> 1 == '1'
False

转换code为 str。

>>> str(1) == '1'
True

或者,您可以转换entry为 int。但是,您应该检查条目仅包含数字或应该捕获 ValueError。

于 2013-08-20T17:23:42.103 回答
2

4 == '4'出于同样的原因False。您需要比较类似的数据类型。做

if int(entry) == code

或者

if entry == str(code)

(另外,它是randrange,不是randomrange

于 2013-08-20T17:25:19.073 回答