繁体   English   中英

如何在python 3.3中修复此错误? TypeError:不可排序的类型:str()<int()

[英]how do I fix this error in python 3.3? TypeError: unorderable types: str() < int()

我试图创建一个猜数字游戏,但收到“ guessestaken”错误,我从http://inventwithpython.com/IYOCGwP_book1.pdf第57页复制了代码。对不起,我对python有点陌生。

import random
guessestaken=0
print ("hello what ur name?")
myname=input()
number=random.randint(1,20)
print ("well " + myname + " i am thinking of a number guess it")

while guessestaken < 6 :
    guessestaken=guessestaken+1
    guess =input('take a guess')
    guess = int(guess)

    if guess <number:
        print('too low')
    if guess >number:
        print ('too high')
    if guess ==number:
        break
    if guess ==number:
        guessestaken=str(guessestaken)
        print ('good job ' + myname + ' you are right!')
        print ('you guessed it in ' + guessestaken + ' guesses')
    if guess !=number:
        guessestaken = str(guessestaken)
        print ("I am sorry but you couldn't get it right")
        print ("you couldn't guess it in " + guessestaken + " guesses")

错误消息是(试图)通知您您正在尝试将strint进行比较。 特别是,应该有一个回溯通知您错误发生的位置:

Traceback (most recent call last):
  File "./tmp.py", line 8, in <module>
    while guessestaken < 6 :

您会看到您将guessestaken字符串显式转换为字符串:

guessestaken = str(guessestaken)

显然没有必要。 当您要打印猜测的数量时,可以使用+内联(不建议使用它或“ pythonic”)或使用format

print('you guessed it in ' + str(guessestaken) + ' guesses')
print('You guessed it in {} guesses'.format(guessestaken))

您正在将guesstaken转换为字符串以显示它

guessestaken=str(guessestaken)

然后while循环检查是否

while guessestaken < 6 :

这会导致类型错误(python无法比较stringint )。 您应该简单地使用其他名称作为字符串,或者使用类似python的结构内联

print('You guessed it in {} guesses'.format(guessestaken))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM