Python缩进问题(数字猜测游戏)

Python缩进问题(数字猜测游戏),python,Python,当我尝试运行代码时,它会显示: if again == "y": ^ TabError:缩进中制表符和空格的使用不一致 我的代码是: import random def game(): wrong_guesses = [1,2,3,4,5] num = random.randint(0,100) guess = input("Guess a number bewtween 1 and 100, you have five tries "

当我尝试运行代码时,它会显示:

if again == "y":
                ^
TabError:缩进中制表符和空格的使用不一致

我的代码是:

import random

def game():
    wrong_guesses = [1,2,3,4,5]
    num = random.randint(0,100)
    guess = input("Guess a number bewtween 1 and 100, you have five tries ")

    def wrong_guess():
        wrong_guesses.remove()
        print("That is not the number, You have {} guesses left".format(len(wrong_guesses)))

    def right_guess():
        if guess == num:
            print("Congratulations! You guessed the number. You had {} guesses left".format(len(wrong_guesses)))
            play_again()

    def game_over():
        if len(wrong_guesses) == 0:
            break
            play_again()

    def play_again():
        again = input("Would you like to play again? [y/n}")

        if again == "y":
            game()   
        elif again == "n":
            break

game()

错误说明了一切

TabError:缩进中制表符和空格的使用不一致


这意味着您的代码中必须有相互交织的空格和制表符。尝试删除所有空白并仅使用空格(4替换选项卡)。

此问题已被多次回答,例如:

因此,首先,请在StackOverflow上发布新问题之前找出答案

但是,要提供我的答案:

选项卡error
准确地告诉您代码无法运行的原因。制表符与空格的使用不一致(例如,您同时使用制表符和空格)。解决方案是选择制表符或空格,然后以独占方式切换到该制表符或空格

虽然Python不要求您专门使用空格,但PEP8样式指南建议使用空格。您应该能够将编辑器配置为将选项卡转换为空格。PEP8:


此外,尽管语法正确,您可能应该将
play_
函数中的
elif
子句更改为
else
(或者至少在
elif
之后添加一个
else
子句);我之所以这样说,是因为您目前没有处理除“y”和“n”之外的任何输入。更不用说你的代码是递归调用
game()
,而不是在无限循环中运行,这会导致程序在某一点崩溃;为此,我建议将游戏重构为
,而True:
循环,然后
中断
将中断游戏循环——这是传统上游戏循环在高层的工作方式。

最简单的解决方案是:不要在python代码中使用制表符。在现有代码中,将所有选项卡替换为4个空格。将编辑器配置为在按tab键时创建4个空格。您还有另一个与缩进相关的问题:最后一个
if
语句位于函数
play\u
中。(根据程序逻辑,必须在外面。)好的,谢谢。谢谢你的帮助,但不是我有一个不同的问题。它给了我同样的错误信息,但现在游戏()在页面的最底部。我找到了答案。