任何人都可以为我找出这个代码吗?

时间:2016-03-31 11:30:10

标签: python

import random

print "Welcome to the number guesser program. We will pick a number between 1 and 100 and then ask you to pick a number between 1 and 100. If your number is 10 integers away from the number, you win!"

rand_num = random.randint(1, 100)


user_input = raw_input('Put in your guess:').isdigit()
number = int(user_input)

print number

if abs(rand_num - number) <= 10:
    print "Winner"
else:
    print "Loser"

每当我尝试运行此代码时,计算机始终生成数字1.如果我输入一个10(或更少)整数的数字,它仍然会显示else语句。我将感谢任何可以解决我的困境的人。我是python的新手,请尽量保持你的答案。

3 个答案:

答案 0 :(得分:1)

raw_input返回您输入的字符串作为输入。 isdigit()检查字符串是否为数字,并返回True或False。

在您的代码中,您将 isdigit 的返回值分配给user_input因此,您可以获得TrueFalse。然后将它转换为数字,从而获得一个或零。这不是你想要的。

user_input只是raw_input的结果。然后检查它是否是user_input.isdigit()的有效数字。如果它不是数字,则打印错误消息并退出(或重新询问输入),否则将user_input转换为整数并继续。

答案 1 :(得分:0)

问题是这个句子的产品:

user_input = raw_input('Put in your guess:').isdigit(). 

isdigit()的返回值为True或False。当您输入1或任何数字时,它将返回True(True = 1,False = 0),因此如果输入数字,您将始终获得1。你可以这样改变:


    import random

    print "Welcome to the number guesser program. 
    We will pick a number between      
    1 and 100 and then ask you to pick a number 
    between 1 and 100. If your number is 10 integers
    away from the number, you win!"

    rand_num = random.randint(1, 100)

    user_input= raw_input('Put in your guess:')
    is_digit = user_input.isdigit()
    if is_digit==True:
        number = int(user_input)
        print number
        if abs(rand_num - number) <= 10:
            print "Winner"
        else:
            print "Loser"
    else:
        print 'Your input is not a digit.'

答案 2 :(得分:0)

看看这一行: user_input = raw_input('Put in your guess:').isdigit()

函数raw_input为您提供了用户输入,但随后您调用了isdigit,因此在变量user_input中得到isdigit的结果。所以,它有布尔值。

然后进去 number = int(user_input)您将其转换为整数类型。在python中,true为1,false为0.这就是为什么你总是得到1.