当我尝试运行我的代码时,它说:
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()
答案 0 :(得分:1)
这个问题已经回答了很多次,例如:"inconsistent use of tabs and spaces in indentation"
因此,首先,请先寻找答案,然后再在StackOverflow上在此处发布新问题。
但是,请提供我的答案版本:
TabError
会告诉您代码为什么不运行的确切原因。制表符与空格的使用不一致(例如,您同时使用 制表符和空格)。解决方案是选择选项卡或空格,然后仅切换到该选项卡或空格。
虽然Python不需要您专门使用一个,但PEP8样式指南建议使用空格。您应该能够配置编辑器以将制表符转换为空格。 PEP8:https://www.python.org/dev/peps/pep-0008/
尽管在语法上正确,但您可能应该将elif
函数中的play_again
子句更改为else
(或至少 add 一个{ else
之后的{1}}子句;我说这是因为您目前不处理“ y”和“ n”以外的任何输入。更不用说您的代码是递归地调用elif
,而不是在无限循环中运行,这将导致程序在特定点崩溃。为此,我建议将游戏重构到game()
循环,然后while True:
会退出游戏循环-传统上,这是游戏循环在更高层次上的工作方式。
答案 1 :(得分:0)
错误说明了一切。
TabError:缩进中的制表符和空格使用不一致
这意味着您的代码中必须包含交织的空格和制表符。尝试删除所有空白并仅使用空格(用4代替制表符)。