这个Python游戏代码有什么问题?

时间:2010-08-18 16:09:36

标签: python

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)

我一直收到这个错误:如果猜测&lt;秘密: TypeError:unorderable类型:str()&lt; INT()

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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'

答案 2 :(得分:1)

你拼错了“landlubber”。

Landrubber是一个爱抚地面的人 陆地人是一个不了解船的人。

您需要先将输入解析为int,然后再将其与int进行比较。

相关问题