VSCode中Python if-else语句报错求助
VSCode中Python if-else语句报错求助
嘿,别着急!你的代码报错主要是缩进不规范和逻辑小问题导致的,跟编辑器差异关系不大,Python的语法规则是通用的。我帮你拆解下问题:
核心错误原因:
- 缩进混乱:Python完全靠缩进划分代码块,你原代码里的嵌套
if、print语句缩进没有对齐,导致Pylance无法识别正确的代码结构,所以出现了「Unexpected indentation」「Unindent not expected」这类报错; - 重复获取输入:你已经用
age = input(...)拿到了用户的年龄,但后面判断时又写了int(input("age")),这会让程序再次弹出输入框,不仅逻辑冗余,还会打乱流程; - 代码层级错误:
elif和else必须和对应的if保持同一缩进级别,内部的执行语句要再缩进一层,不然会被当成独立的代码块。
你的错误信息参考:
[{ "severity": 8, "message": "Expected expression", "source": "Pylance", "startLineNumber": 15, "startColumn": 1, "endLineNumber": 15, "endColumn": 5 }, { "severity": 8, "message": "Unexpected indentation", "source": "Pylance", "startLineNumber": 16, "startColumn": 1, "endLineNumber": 16, "endColumn": 5 }, { "severity": 8, "message": "Unindent not expected", "source": "Pylance", "startLineNumber": 16, "startColumn": 90, "endLineNumber": 16, "endColumn": 90 }, { "severity": 8, "message": "Expected expression", "source": "Pylance", "startLineNumber": 16, "startColumn": 90, "endLineNumber": 16, "endColumn": 90 }, { "severity": 8, "message": "Statements must be separated by newlines or semicolons", "source": "Pylance", "startLineNumber": 16, "startColumn": 90, "endLineNumber": 16, "endColumn": 90 }]
修正后的代码:
print("Hello and welcome to the roller coaster!") height = float(input("Let's start with your height! Please type in your height in m ")) if height >= 1.3: age = input("You are allowed to ride the roller coaster! Now, how old are you?") age_num = int(age) # 把输入的字符串转成整数,方便判断 if age_num < 12: print("Your total is $5") elif age_num < 18: print("Your total is $7") else: print("Your total is $12") else: print("I'm sorry but you are too short to ride the roller coaster. Come back later.")
关键修改说明:
- 给所有嵌套代码块加上了统一的4空格缩进(VSCode默认会自动缩进,你可以检查下编辑器的「Indentation」设置,避免混用工制表符和空格);
- 把第一次获取的
age转成整数存在age_num变量里,后续判断直接用这个变量,不用重复让用户输入; - 让
elif、else和对应的if保持同一缩进级别,确保条件分支结构清晰。
你把修正后的代码复制到VSCode里试试,应该就能正常运行啦!如果还有问题,可以检查下是否不小心把空格和制表符混在一起了,这也是新手常犯的缩进问题~
备注:内容来源于stack exchange,提问作者ERDEM ONUR VURAL




