我想分配一些值,然后尝试让某人猜测这个值。我尝试过这方面的一些事情,但我似乎无法让它发挥作用......:
foo = 1
guessfoo = input('Guess my number: ')
if foo == guessfoo:
print('Well done, You guessed it!')
if foo != guessfoo:
print('haha, fail.')
为什么这不起作用?我应该怎么做呢?我是初学者,请帮忙!
答案 0 :(得分:4)
使用python 版本3 :
input()返回一个'str'(字符串)对象。字符串与整数的比较返回False:
1 == '1'
False
你必须像那样输入你的输入:
guessfoo = int(input('Guess my number: '))
不要忘记尝试...除非输入的结果无法转换为int。
完整的示例代码:
try:
foo = 1
guessfoo = int(input('Guess my number: '))
if foo == guessfoo:
print('Well done, You guessed it!')
else:
print('haha, fail.')
except ValueError:
# cannot cast your input
pass
编辑:
使用python 版本2 :
感谢您的评论:
在以前的版本中,输入将评估字符串,因此如果用户输入1,则输入返回一个int。
输出或您的原始代码:
$ python2 test.py
Guess my number: 1
Well done, You guessed it!
答案 1 :(得分:0)
目前你无条件停止循环。你只是打印东西。在您猜到数字后输入break
,或将loop
设置为不同于1的值。
答案 2 :(得分:0)
因为整数(foo)不是字符串(input()的结果)。 如果您认为Python的行为类似于PHP或Perl,那么您就错了
1与' 1'完全不同。
您必须使用int(..)将字符串转换为int或检查&f; foo' 作为一个字符串。
答案 3 :(得分:0)
import random
try:
inp = raw_input # Python 2.x
except NameError:
inp = input # Python 3.x
foo = random.randint(1,10)
while True:
guess = int(inp('Guess my number: '))
if guess < foo:
print('Too low!')
elif guess > foo:
print('Too high!')
else:
print('You got it!')
break
答案 4 :(得分:0)
答案 5 :(得分:0)
另外,你应该使用两种不同的if吗? 不应该是更像
的东西if foo == guessfoo:
print('Well done, you guessed it!')
else:
print('haha, fail.')