Windows10下Sublime Text 3无法运行Python 3.7.2程序求助
问题解决指南
一、Sublime Text无输出/无法处理输入的解决方法
不用重新编写程序,问题出在Sublime Text默认构建系统不支持交互式输入(比如input()),且输出缓冲可能导致内容不显示。按以下方式解决:
方法1:用Terminus插件实现交互式运行
- 打开命令面板(Ctrl+Shift+P),输入
Package Control: Install Package,搜索Terminus安装 - 打开命令面板,输入
Terminus: Open Default Shell in View,在弹出的终端里直接执行:python 你的脚本文件名.py - (可选)配置为默认构建系统:
- 点击
Tools > Build System > New Build System,粘贴以下内容:{ "target": "terminus_exec", "cancel": "terminus_cancel_build", "shell_cmd": "python \"$file\"", "working_dir": "$file_path", "env": {"PYTHONIOENCODING": "utf-8"} } - 保存为
Python-Terminus.sublime-build,之后选择该构建系统运行代码即可
- 点击
- 打开命令面板(Ctrl+Shift+P),输入
方法2:用外部终端运行
直接在文件管理器找到脚本,右键选择「用Python打开」;或者打开命令提示符,进入脚本所在目录,执行python 脚本文件名.py
二、你的代码存在的错误(这些也会导致运行失败)
以下是修正后的代码,标注了原代码的问题:
# 原代码缺失的变量,需提前定义 available_burger_ingredients = ["生菜", "番茄", "芝士", "牛肉饼"] available_drinks = ["可乐", "雪碧", "橙汁"] class Order: '''Order class for both burgers and pizzas''' def __init__(self, food='burger'): # 原错误:lower是方法,需加()调用,否则存储的是方法对象 self.food = food.lower() def order_burger(self, drink, *burger): self.drink = drink self.burger = burger # 原错误:cost是外部变量,需声明全局或作为参数传入 global cost # 原错误:缺少食材价格字典,且元组没有get方法 burger_prices = {"生菜":5, "番茄":3, "芝士":4, "牛肉饼":10} for ingredient in burger: cost += burger_prices.get(ingredient, 0) cost = 0 while True: name = input("Hello, what is your name?\n:") # 原错误:用name作为实例名会覆盖用户输入的名字,改为order_obj order_obj = Order(input(f"Hello {name}, what kind of food would you like? (Burger / Pizza)\n:")) # 原错误:order_burger参数顺序反了,需先传drink再传食材 ingredients = input(f"This is the list of available ingredients: \n{available_burger_ingredients} \nWhat ingredients would you like to have in your burger?\n:").split() drink = input(f"This is the list of available drinks: \n{available_drinks} \n What would you like to drink? (Choose one only)\n:") order_obj.order_burger(drink, *ingredients) # 添加输出查看总价 print(f"当前订单总价:{cost}")
核心错误说明:
- 缺失
available_burger_ingredients和available_drinks变量,直接运行会报错 food.lower未加括号,导致存储的是方法而非转换后的字符串order_burger中cost未声明全局,会触发未定义错误- 未定义食材价格字典,且错误地对元组使用
get方法 - 实例命名覆盖了用户输入的
name变量,逻辑混乱 order_burger调用时参数顺序与定义不符
三、简单print无输出的解决
如果连print("hello world")都无输出,直接用上述两种方法切换运行方式即可,本质还是默认构建系统的输出缓冲问题。
内容的提问来源于stack exchange,提问作者Xerion_a
相关产品推荐
相关产品推荐

