matplotlib如何实现3次用户输入并生成3个对应函数图像
代码问题排查
原代码存在3处核心错误,导致无法实现预期效果:
- 循环区间设置错误:
range(1, 1)生成的是空序列,循环体一次都不会执行,要实现3次循环应使用range(3) - 缩进逻辑错误:所有绘图代码被错误缩进至
my_func2函数内部,且放在return语句之后,属于永远不会执行的死代码;同时函数被放在循环内重复定义,没有实际必要 - 输入逻辑错误:参数
a的输入逻辑被写在计算函数内部,会导致计算函数值时重复触发输入,不符合单次输入对应单次绘图的需求
修正后完整代码
%matplotlib inline import numpy as np import matplotlib.pyplot as plt for _ in range(3): # 获取当前次绘图的幂次参数 a = int(input()) # 生成x轴采样数据,取100个点保证曲线平滑 x = np.linspace(0, 2, 100) y = x ** a # 绘制当前幂次的函数曲线 plt.plot(x, y, label=f'y = x^{a}') plt.xlabel("x", size=14) plt.ylabel("y", size=14) plt.grid(alpha=0.3) plt.legend() plt.show()
运行说明
- 运行后会依次触发3次输入,每次输入整数幂次后按回车,就会生成对应
y=x^a在[0,2]区间的函数图像 - 代码增加了图例标注,可直观区分不同幂次对应的曲线,不需要可直接删除
plt.legend()行
内容的提问来源于stack exchange,提问作者박건일
相关产品推荐
相关产品推荐

