复刻CS50P课程Python代码出现语法错误,请求排查
问题排查与解决
你的代码本身没有语法错误,问题出在运行代码的方式上,以下是具体错误原因和解决步骤:
错误原因分析
交互式环境中错误输入代码
你首次报错时是在Python交互式解释器(>>>提示符)里直接输入带缩进的字典片段,而且还写错了代码("Patronus"没有对应的键值对),交互式环境对缩进和完整语法要求严格,直接这样输入必然触发IndentationError。在Python交互环境中执行Shell命令
后续你在>>>提示符下输入cd /workspaces/150403671、python hogwarts.py这类命令,这些是终端Shell命令,不能在Python交互式环境中执行,所以会触发NameError或SyntaxError。
正确运行步骤
确保代码文件正确
把你提供的代码完整保存为hogwarts.py文件,确认内容如下:students = [ {"name": "Hermione", "house": "Gryffindor", "patronus": "Otter"}, {"name": "Harry", "house": "Gryffindor", "patronus": "Stag"}, {"name": "Ron", "house": "Gryffindor", "patronus": "Jack russel terrier"}, {"name": "Draco", "house": "Slytherin", "patronus": None} ] for student in students: print(student["name"], student["house"], student["patronus"])退出Python交互式环境
在>>>提示符下输入exit()或按Ctrl+D退出,回到终端的常规命令提示符(比如$)。切换到代码所在目录并运行
在终端中执行Shell命令:cd /workspaces/150403671 python hogwarts.py运行后会输出预期结果:
Hermione Gryffindor Otter Harry Gryffindor Stag Ron Gryffindor Jack russel terrier Draco Slytherin None
额外提示
- 明确区分Python交互式环境(
>>>)和终端Shell($或类似提示符):前者用于快速测试小段Python代码,后者用于执行文件、切换目录等系统操作。 - 如果需要在交互式环境中测试完整代码,可直接粘贴完整代码片段,或使用
python -i hogwarts.py命令运行文件后进入交互模式查看变量。
内容的提问来源于stack exchange,提问作者Blacov.
相关产品推荐
相关产品推荐

