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

Python缩进及语法错误:修复后PyCharm中number_input灰显程序运行异常

Python程序缩进与运行报错修复方案

已定位的所有问题

  • q05.py中set_units、set_price两个setter方法缺少赋值逻辑,仅写了属性名没有赋值操作,方法无效
  • 主程序导入模块语法错误:导入Python文件不需要加.py后缀,import q05.py应改为import q05
  • 主程序缩进混乱:main()函数下的变量定义、逻辑代码均未正确缩进,导致变量属于全局作用域,函数内调用时识别为未定义,因此PyCharm提示number_input为null
  • 输入值类型不匹配:input()返回值为字符串类型,直接和整数1、2、3比较永远返回False,需转换为int类型
  • 业务逻辑错误:多余的循环嵌套、打印逻辑仅在输入3时才会执行、每次添加商品前清空列表的逻辑不符合需求,输入对应数字应直接取对应下标的商品数据即可,无需多次循环

修复后代码

q05.py

class RetailItem:
    def __init__(self, descr, units, price):
        self.__descr = descr
        self.__units = units
        self.__price = price

    # mutator methods
    def set_descr(self, descr):
        self.__descr = descr

    def set_units(self, units):
        self.__units = units

    def set_price(self, price):
        self.__price = price

    # accessor methods
    def show_descr(self):
        return self.__descr

    def show_units(self):
        return self.__units

    def show_price(self):
        return self.__price

    # set string method
    def __str__(self):
        return "Description: " + self.__descr + \
               "\nUnits in Inventory: " + str(self.__units) + \
               "\nPrice: $" + str(self.__price)

q05_1test.py

import q05

def main():
    # user enters number that determines what results will be displayed
    number_input = int(input("Enter 1 for item 1 and vise versa for items 2 and 3: "))
    items_list = []

    # list
    descr_list = ["Jacket", "Designer Jeans", "Shirt"]
    units_list = [12, 40, 20]
    price_list = [59.95, 34.95, 24.95]

    # 直接根据输入取对应下标的商品,输入1对应下标0,输入2对应下标1,输入3对应下标2
    if 1 <= number_input <=3:
        index = number_input - 1
        descr = descr_list[index]
        units = units_list[index]
        price = price_list[index]
        item = q05.RetailItem(descr, units, price)
        items_list.append(item)
        # 打印结果
        for item in items_list:
            print(item)
            print()
    else:
        print("请输入1、2、3中的有效数字")

if __name__ == "__main__":
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:36:07