簡體   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