2010-08-18 23 views
4
import random 

secret = random.randint (1,99) 
guess = 0 
tries = 0 

print ("AHOY! I'm the Dread Pirate Roberts, and I have a secret!") 
print ("It is a number from 1 to 99. I'll give you 6 tries. ") 

while guess != secret and tries < 6: 
    guess = input ("What's yer guess? ") 
    if guess < secret: 
     print ("Too low, ye scurvy dog") 
    elif guess > secret: 
     print ("Too high, landrubber!") 
    tries = tries + 1 
if guess == secret: 
    print ("Avast! Ye got it! Found my secret, ye did!") 
else: 
    print ("No more guesses! Better luck next time, matey!") 
    print ("The secret number was", secret) 

我不斷收到此錯誤:如果猜測<祕密: 類型錯誤:unorderable類型:STR()< INT()這個Python遊戲代碼有什麼問題?

回答

12
guess = input ("What's yer guess? ") 

調用input給你回string,不是int。當您使用<比較guess時,您需要一個int以比較數值。嘗試沿着線做的事情:

try: 
    guess = int(input("What's yer guess? ")) 
except ValueError: 
    # Handle bad input 
6

因爲Python是強類型的,你不能比較兩個字符串和一個int。你從input()得到的是str而不是int。因此,在比較可能之前,您需要將str轉換爲int

guess = int(input("What's yer guess")) 

你也應該當輸入不是可轉化成int處理拋出可能是個例外。所以,代碼變爲:

try: 
    guess = int(input("What's yer guess")) 
except ValueError: 
    print ('Arrrrr... I said a number ye lily-livered dog') 

此外,input()是不安全的,至少在Python 2.x版本這是因爲input()接受任何有效的Python語句。如果您使用的是Python 2.x,則應該使用raw_input()。如果你使用的是Python 3,只需要忽略這一點。

try: 
    guess = int(raw_input("What's yer guess")) 
except ValueError: 
    print 'Arrrrr... I said a number ye lily-livered dog' 
+0

他使用Python 3'print',所以'input()'不是問題。 – 2010-08-18 16:20:41

+0

不一定。在Python 3中'print()'是完全有效的。無論如何,編輯澄清。 – 2010-08-18 16:22:23

+0

s/3/2。我的意思是'print' _can_可以和Python 2中的函數調用使用相同的語法,儘管我確實認爲它並不經常用於這種方式。 – 2010-08-18 16:26:34

1

你拼寫錯了「土糟」。

陸地橡膠是一個愛撫地面的人。
陸路巴士是一個不知道自己繞過船的人。

而且您需要將輸入解析爲一個int,然後才能將其與int進行比較。

+0

我很希望我能給你+1這個:D。 – 2010-08-18 17:25:22