猜一个数字,不管是真还是假?蟒蛇

时间:2011-04-02 18:16:57

标签: python numbers boolean

我想分配一些值,然后尝试让某人猜测这个值。我尝试过这方面的一些事情,但我似乎无法让它发挥作用......:

   foo = 1
   guessfoo = input('Guess my number: ')
   if foo == guessfoo:
       print('Well done, You guessed it!')
   if foo != guessfoo:
       print('haha, fail.')

为什么这不起作用?我应该怎么做呢?我是初学者,请帮忙!

6 个答案:

答案 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.')