Codecademy 循环 8/19

1 投票
4 回答
4349 浏览
提问于 2025-04-18 10:23

我有一段时间没编程了,所以我想继续我的codecademy教程,重新找回感觉。现在我很困惑,因为我遇到了很多语法错误,而我觉得这些地方应该是没问题的。

这是我的代码:

from random import randint

# Generates a number from 1 through 10 inclusive
random_number = randint(1, 10)

guesses_left = 3
# Start your game!
while guesses_left > 0:
    guess = int(raw_input("Your guess: ")
    if guess == random_number:
        print "You win!"
        break
    guesses_left = guesses_left - 1
else:
    print "You lose."

我在第10行遇到了语法错误,是因为那儿有个冒号。

我不明白为什么,这不是一个if语句吗?if语句后面不应该总是有个冒号吗?

今天我遇到了很多简单的语法错误,我真的搞不懂为什么会这样。

4 个回答

0

这是我怎么做的,我还加了一些额外的功能,纯粹是为了好玩 c:

from random import randint

# Generates a number from 1 through 10 inclusive
random_number = randint(1, 10)

print random_number # For debugging

guesses_left = 3 # Amount of guesses left
print "Guess my number! You've got 3 tries left!"

tries = [] # Array for user input

while guesses_left > 0:
    guess = int(raw_input("Your guess: ")) # Asks user to enter a number

    if guess in tries: # Checks if user entered the same number before
        print "You've already guessed this number: ", guess
        print "You've got " , int(guesses_left) , " guess(es) left!"

    elif guess > 10 or guess < 1: # Checks if user input is between 1 and 10
        print "Wrong input! Guess a number between 1 and 10!"
        print "You've got " , int(guesses_left) , " guess(es) left!"

    elif guess == random_number: # If user input is the same as the random number you win!
        print "You win!"
        break

    else:
        guesses_left -= 1 # Decreases the amount of guesses left
        print "You've got " , int(guesses_left) , " guess(es) left!"
        tries.append(guess) # Saves user input to "tries"
else:

    print "You lose!"
0

这段代码是可以运行的,能让你顺利完成任务。我遇到的主要错误是,虽然代码能正常工作,但在游戏结束后还是提示有错误。这是因为我的else: print 'You lose.'这部分代码放在了while循环里面。正确的做法是把else:的缩进和while:保持一致,这样才能达到他们想要的效果。

from random import randint

# Generates a number from 1 through 10 inclusive
random_number = randint(1, 10)

guesses_left = 3

while guesses_left > 0:
    guess = int(raw_input("Your guess: "))
    guesses_left -= 1
    if guess == random_number:
        print "You win!"
        break
else:
    print "You lose."
0

你可以对你的代码做一些小调整:

from random import randint

# Generates a number from 1 through 10 inclusive
random_number = randint(1, 10)

guesses_left = 3
# Start your game!
while guesses_left > 0:
    guesses_left = guesses_left - 1
    guess = int(raw_input("Your guess: "))
    if guess == random_number:
        print "You win!"
        break
else:
        print "You lose."
2

这是你代码的直接复制粘贴吗?你的 int() 没有关闭。

guess = int(raw_input("Your guess: ")   <--- missing parenthesis

另外,guesses_left 的减少位置不对。它应该放在 else 语句之后,因为每次循环都应该减少这个值,不管 if/else 的结果如何。

还有,你的 else 语句的缩进和 if 不对齐。在 Python 中,缩进非常重要。

撰写回答