Python 猜谜游戏只会认为猜得太高

Python 猜谜游戏只会认为猜得太高,python,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 =

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

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!')  
from\uuuuu future\uuuuu导入打印功能
随机输入
def goguess():
HighNumber=random.randint(1100)
LowNumber=random.randint(1,HighNumber-1)
答案=random.randint(低数字+1,高数字)
猜测=0
打印('我有一个介于',LowNumber'和',HighNumber'之间的数字,包括')
猜测=原始输入(“猜测:”)
猜猜看!=答复:
如果猜测>回答:
打印(猜测“太高了”。)
猜测+=1
打印('猜测:',猜测)
猜测=原始输入(“猜测:”)
如果猜测<答案:
打印(猜测“太低”)
猜测+=1
打印('猜测:',猜测)
猜测=原始输入(“猜测:”)
如果猜测==答案:
打印('对!我的号码是',回答'!你猜中了',猜中了,'猜中了!')

您需要将其输入转换为
int

guess = int(raw_input('guess:'))
否则,您会将
str
int
进行比较,
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()
'3'>7
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
'3' > 7
TypeError:无序类型:str()>int()

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

你可以储存

intguess = int(guess)

这与您当前的问题无关,但如果
HighNumber
的值为1,您的程序将崩溃。然后
LowNumber
尝试分配给
random.randint(1,0)
,这不起作用。
intguess = int(guess)