You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:07:45