【问题标题】:Python indenting issue (Number Guess Game) [duplicate]Python缩进问题(猜数字游戏)[重复]
【发布时间】:2018-06-20 07:50:40
【问题描述】:

当我尝试运行我的代码时,它会说:

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()

【问题讨论】:

  • 最简单的解决方案是:不要在 python 代码中使用制表符。在您现有的代码中,将所有制表符替换为 4 个空格。将编辑器配置为在按 Tab 时创建 4 个空格。
  • 您还有另一个与缩进相关的问题:最后一个 if 语句在函数 play_again 内。 (必须在外面,根据程序的逻辑。)
  • 好的,谢谢。为您的帮助,但不是我有不同的问题。它给了我同样的错误信息,但现在页面底部有 game()。
  • 我想通了。

标签: python


【解决方案1】:

这个问题已经回答过无数次了,例如:"inconsistent use of tabs and spaces in indentation"

首先,在 StackOverflow 上发布新问题之前,请先寻找答案。

但是,提供我的答案版本:

TabError 告诉您代码无法运行的确切原因。您对制表符与空格的使用不一致(例如,您使用 both 制表符和空格)。解决方案是选择制表符或空格并专门切换到它。

虽然 Python 不要求您专门使用一个,但 PEP8 样式指南建议使用空格。您应该能够配置您的编辑器以将制表符转换为空格。 PEP8:https://www.python.org/dev/peps/pep-0008/

此外,虽然语法正确,但您可能应该将play_again 函数中的elif 子句更改为else(或至少在@ 之后添加一个else 子句987654328@);我这么说的原因是你目前没有处理除“y”和“n”之外的任何输入。更不用说您的代码正在递归调用game(),而不是在无限循环中运行,这将导致程序在某个点崩溃;为此,我建议将游戏重构为 while True: 循环,然后 break 将脱离游戏循环——这通常是游戏循环在高级别的工作方式。

【讨论】:

    【解决方案2】:

    错误说明了一切。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-23
      • 2016-06-21
      • 2013-10-09
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多