猜谜游戏只会觉得猜得太高

2024-06-10 08:47:20 发布

您现在位置:Python中文网/ 问答频道 /正文

有人知道为什么这个函数只输出猜测过高的结果吗?如何修复的想法?你知道吗

from __future__ import print_function
import random
def goguess():
    HighNumber= random.randint(1,100)
    LowNumber= random.randint(1,HighNumber-1)
    answer = random.randint(LowNumber+1,HighNumber)
    guesses = 0
    print ('I have a number between', LowNumber, 'and', HighNumber, 'inclusive.')
    guess = raw_input('guess:')
    while guess != answer:
        if guess > answer:
            print(guess, 'is too high.')
            guesses+=1
            print('Guess:', guesses)
            guess = raw_input('guess:')
        if guess < answer:
            print(guess, 'is too low')
            guesses+=1
            print('Guess:',guesses)
            guess = raw_input('guess:')
    if guess == answer:
        print ('Right! My number is', answer,'! You guessed in ',guesses, 'guesses!')  

Tags: answerimportnumberinputrawifisrandom
2条回答

您需要将它们的输入转换为int

guess = int(raw_input('guess:'))

否则,您将strint进行比较,而str将始终更大。你知道吗

>>> '3' > 7
True
>>> int('3') > 7
False

在Python3.x中,您将以更明显的方式看到这个问题,因为您不能再像这样比较这些类型了

>>> '3' > 7
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    '3' > 7
TypeError: unorderable types: str() > int()

猜测必须是整数才能与整数进行比较。原始输入返回一个整数字符串。可以使用int()将字符串转换为整数。之后

guess = raw_input('Guess')

你可以储存

intguess = int(guess)

相关问题 更多 >