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
相关产品推荐
相关产品推荐

