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的新手,请尽量保持你的答案。
答案 0 :(得分:1)
raw_input
返回您输入的字符串作为输入。 isdigit()
检查字符串是否为数字,并返回True或False。
在您的代码中,您将 isdigit
的返回值分配给user_input
因此,您可以获得True
或False
。然后将它转换为数字,从而获得一个或零。这不是你想要的。
让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.