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

Windows10下Sublime Text 3无法运行Python 3.7.2程序求助

问题解决指南

一、Sublime Text无输出/无法处理输入的解决方法

不用重新编写程序,问题出在Sublime Text默认构建系统不支持交互式输入(比如input()),且输出缓冲可能导致内容不显示。按以下方式解决:

  • 方法1:用Terminus插件实现交互式运行

    1. 打开命令面板(Ctrl+Shift+P),输入Package Control: Install Package,搜索Terminus安装
    2. 打开命令面板,输入Terminus: Open Default Shell in View,在弹出的终端里直接执行:python 你的脚本文件名.py
    3. (可选)配置为默认构建系统:
      • 点击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,之后选择该构建系统运行代码即可
  • 方法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}")

核心错误说明:

  1. 缺失available_burger_ingredients和available_drinks变量,直接运行会报错
  2. food.lower未加括号,导致存储的是方法而非转换后的字符串
  3. order_burger中cost未声明全局,会触发未定义错误
  4. 未定义食材价格字典,且错误地对元组使用get方法
  5. 实例命名覆盖了用户输入的name变量,逻辑混乱
  6. order_burger调用时参数顺序与定义不符

三、简单print无输出的解决

如果连print("hello world")都无输出,直接用上述两种方法切换运行方式即可,本质还是默认构建系统的输出缓冲问题。

内容的提问来源于stack exchange,提问作者Xerion_a

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:11:14