如何修复Python中空if块引发的缩进错误?
问题修复方案
核心问题及解决要点
- 空代码块触发缩进错误:Python要求
if/elif/else分支下必须有至少一行缩进代码,哪怕用pass占位。你的代码里if userin == "1":和invinspect函数的else:下方只有注释或空行,这直接导致缩进报错。 - elif缩进层级错误:
elif必须和对应的if保持同一缩进级别,不能缩进在if的代码块内,否则会被识别为嵌套语句,触发语法错误。 - 输入类型不匹配:
input()返回字符串类型,你用userin == 1(整数)的比较永远不成立,需改为字符串对比userin == "1"。 - 缺失依赖模块:
clear()和time.sleep()需要导入os和time模块,否则会报未定义错误。
修复后的完整代码
import os import time def airlock(inventory): os.system('cls' if os.name == 'nt' else 'clear') # 跨平台清屏 userin = None inventory["note"] = "your astronaut ID is: 2579" while userin != "quit": time.sleep(1.5) print("description of airlock, keypad on wall next to door") print("what u wanna do? 1 look around 2 check pockets 3 go to keypad") userin = input() if userin == "1": # describe the keypad. there is nothing else in the room print("The keypad has a numeric layout, glowing faintly blue.") # 替换为实际描述或用pass占位 elif userin == "2": invinspect(inventory) # 可补充对"3"和"quit"的处理逻辑 def invinspect(inventory): userin = None print(inventory.keys()) print("what would you like to do? 1. look closer 2 go back") userin = input() if userin == "1": print(str(inventory)) else: pass # 用pass占位,或添加返回上级的逻辑 def main(): inventory = {} airlock(inventory) main()
内容的提问来源于stack exchange,提问作者Emily StG
相关产品推荐
相关产品推荐

