Python 3.6嵌套if语句语法错误:缩进无误仍报错求助
排查嵌套if中的elif语法错误
兄弟,看了你贴的代码片段和问题描述,虽然代码没写完,但大概率是这几个坑导致的语法错误,我给你捋捋:
最可能的原因:未闭合的字符串/不完整语句
你贴的最后一行代码:
print ("IF THE DRAGON HITS H...
这个字符串明显没写完(缺少闭合的双引号),Python解析器会把后面的所有内容都当成这个字符串的一部分,自然会把你后续写的elif识别成非法语法——毕竟解析器还没跳出这个字符串的语境呢!
其他可能的排查方向
就算你补全了字符串,还是要确认这两点:
elif必须有对应的同层级if:你不能平白无故写一个elif,它必须紧跟在同缩进层级的if或者另一个elif后面。比如嵌套在内部的elif,必须和它所在块里的if对齐,不能跨层级。- 缩进真的完全正确吗?:有时候看起来对齐了,但可能混合了空格和制表符(Python对这个很敏感),你可以把代码复制到编辑器里开启"显示空白字符"的功能,检查所有缩进是否统一用空格或者制表符。
补全后的示例代码参考
我把你没写完的部分补了点逻辑,确保语法正确,你可以对比下:
import time # 假设这是你定义的变量 ch3 = "y" sword = 1 # FIGHT Dragons if ch3 in ['y', 'Y', 'Yes', 'YES', 'yes']: # WITH SWORD if sword == 1: print("You only have a sword to fight with!") print("You quickly jab the Dragon in it's chest and gain an advantage") time.sleep(2) print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") print(" Fighting... ") print(" YOU MUST HIT ABOVE A 5 TO KILL THE DRAGON ") print("IF THE DRAGON HITS HIGHER THAN 3, YOU TAKE DAMAGE!") # 模拟攻击判断的逻辑 player_roll = 7 dragon_roll = 2 if player_roll > 5: print("You deliver a fatal blow! The dragon collapses!") elif player_roll <= 5: print("Your attack barely scratches the dragon...") if dragon_roll > 3: print("The dragon swipes at you, dealing heavy damage!") else: print("The dragon misses its attack! You get another chance!")
先把未闭合的字符串补全,再检查elif的层级对应关系,应该就能解决问题啦!
内容的提问来源于stack exchange,提问作者Paul Massey
相关产品推荐
相关产品推荐

