我正在使用Python 3.1 IDLE并且发现空格(我将这样标记为_)被IDLE强调为语法错误。我想知道是否有人知道问题所在并提供解决方案。我知道它看起来不对,但下划线就是要强调IDLE说问题所在。我无法弄清楚该行和下一行的问题是什么。
def attrSelection():
while attrChoice!=6
if attrChoice==1:
attrChoice=Power
baseAttr=int(basePow)
attrEditor()
_ elif attrChoice==2:
attrChoice=Health
baseAttr=int(baseHlth)
attrEditor()
elif attrChoice==3
attrChoice=Wisdom
baseAttr=int(baseWis)
attrEditor()
elif attrChoice==4:
attrChoice=Dexterity
baseAttr=int(baseDex)
attrEditor()
elif attrChoice==5:
assignRandom()
else:
print('Option does not exist. Please enter option in range 1-6.')
attrChoice=input('Choice: ')
答案 0 :(得分:5)
IDE可能会向您指出错误:
def attrSelection():
while attrChoice!=6
...
elif attrChoice==3
...
:
和6
之后,您遗失了3
。否则,一切看起来都很好,假设您在列出代码时没有错过缩进。
答案 1 :(得分:0)
python对空间非常挑剔,因为它使用空格来定义代码块。这是一个设计选择,它是激进的,有它的支持者和对手。但结果是,你需要非常小心你在一行代码前放置了多少空格,因为python不会理解如下:
i = 1
j = 2
k = 3
逻辑上,这意味着i
,j
和k
不在同一个块中,这是不可能的,因为块应以特殊语句开头,通常以a结尾冒号(:
)。所以python只会抛出你在代码中看到的语法错误,说空格有问题!
在你的情况下,很可能你正在使用制表符进行对齐,这使得两个字符在第8列对齐。但是在代码的某处,你有空格而不是制表符,使你的代码有5个字符在第8栏对齐
<TAB><TAB>i = 1
<TAB> j = 2
因此,如果您将制表符视为空格,请写下以下内容:
i = 1
j = 2
因此python不理解你的代码!作为一般建议,只使用空格永远不会标记缩进代码,这样就不会被标签/空格搞砸了。
N.B。:正如其他人所说的那样,你的代码确实是错误的,在以下陈述的末尾遗漏了冒号:
while attrChoice!=6
...
elif attrChoice==3
...
正如他们指出的那样,直到现在我才把它放在我的答案中。虽然如果你的IDE在缩进中给你一个错误,但它是一个缺少的冒号,那么你应该考虑更改IDE,因为你的IDE实际上无法提供相关的错误/警告,可以帮助更快,更容易地编写代码。
答案 2 :(得分:-1)
在第二个和第二个elif之后缺少冒号。在添加这些内容之后,它为我空闲扫描。