学习Python:如果条件一直在执行

x.5*_*509 3 python

我正在学习python,我无法弄清楚为什么以下程序打印你的数字大于我想的,即使猜测的数字较小.就像在python中一样,它是在比较字符串而不是数字?

number = 32
tries = 1

print "I have chosen a number, you have to guess it."
guess = raw_input ("Guess:")

while guess != number:
    tries = tries+1
    if guess > number:
        print("Your guess is greater than i thought")
        guess = raw_input ("Another Guess:")
    else:
        print("Your guess is smaller than i thought")
        guess = raw_input ("Another Guess:")

print "You guess it right in %d turns." %tries
Run Code Online (Sandbox Code Playgroud)

PS:我知道这是一个愚蠢的问题,但我是python的菜鸟!

Toj*_*oji 11

raw_input将返回一个字符串.您需要将其解析为数字才能使比较正常工作.我认为那只是int(raw_input(...))

  • 如果输入不是数字,那么在`int()`周围包装`try``除了`可能是好的. (4认同)

fle*_*tom 6

直到现在我才知道这一点,但事实证明,一个字符串总是"大于"Python中的整数:

>>> "0" > 1
True
Run Code Online (Sandbox Code Playgroud)

您需要做的就是更换

guess = raw_input ("Guess:")
Run Code Online (Sandbox Code Playgroud)

guess = int(raw_input ("Guess:"))
Run Code Online (Sandbox Code Playgroud)

  • 注意:在比较int-str等不可比较的值时,Python 3会导致类型错误. (2认同)
  • 它应该!我很惊讶在Python中如此愚蠢地存活了这么长时间...... (2认同)