Python实现按用户输入生成销售图表及matplotlib报错解决
报错直接原因
导入语句模块名拼写错误:matplotlib.pylot为笔误,正确模块路径是matplotlib.pyplot,社区约定俗成导入别名为plt。
如果本地未安装matplotlib库,先在终端执行命令安装:pip install matplotlib
原代码其余逻辑错误
- 类型转换顺序写反:
input(int("提示文本"))逻辑错误,int()/float()需要包裹input()返回值,先获取用户输入的字符串再转数值,否则会直接尝试把提示文本转数值触发报错。 - 缺少输入合法性校验:未判断用户输入的天数是否满足≥2的要求,也未处理用户输入非数字内容的异常场景。
- 循环收集数据逻辑错误:
range(len(days))用法错误,days是整数类型没有长度属性,应该直接遍历1到days的序列;销售额输入的append操作写在循环外,只会保留最后一次输入的值;循环内拼接提示文本时直接拼接整数类型的天数序号会触发类型错误。 - 绘图逻辑顺序混乱:未创建
ax坐标轴对象就提前调用set_title、set_xlabel等方法;冗余写了无参数支撑的直方图绘制代码;调用plt.bar时错误将天数包裹为嵌套列表,会导致坐标轴维度不匹配。
修正后可运行代码
import matplotlib.pyplot as plt def chart_maker(): # 读取并校验统计天数 while True: try: days = int(input("请输入大于等于2的统计天数:")) if days >= 2: break print("输入不合法,请输入≥2的整数") except ValueError: print("请输入有效的整数") sales_list = [] # 逐天收集销售额数据 for day_seq in range(1, days + 1): while True: try: day_sale = float(input(f"请输入第{day_seq}天的销售额:")) sales_list.append(day_sale) break except ValueError: print("请输入有效的数值作为销售额") # 绘制柱状图 day_x = [f"第{i}天" for i in range(1, days + 1)] fig, ax = plt.subplots() ax.bar(day_x, sales_list) # 设置图表属性 ax.set_title('每日销售额统计') ax.set_xlabel('统计日期') ax.set_ylabel('销售额') # 弹出窗口展示图表 plt.show() if __name__ == "__main__": chart_maker()
内容的提问来源于stack exchange,提问作者Gabriel Angelos
相关产品推荐
相关产品推荐

