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

Python使用while循环输出结果绘图返回空图且报值错误如何解决

问题原因

  • 缩进错误:原代码中函数定义下的条件判断、while循环内的赋值语句都没有正确缩进,Python依赖缩进区分代码块,运行时会直接报错。
  • 未存储迭代过程值:while循环运行过程中仅不断更新q的取值,没有留存每一步的计算结果,循环结束后q仅为最终值1(单个标量),没有可用于绘图的序列数据。
  • 绘图数据维度不匹配:你定义的i是包含3个元素的数组,和单个值q长度不一致,plt.plot要求传入的x、y序列长度完全匹配,因此会抛出值错误,无法生成图像。

修正后的完整代码

# 定义函数f(n)
def f(n):
    if (n % 2) == 0:
        return n/2
    else:
        return (3*n + 1)/2

# 循环迭代并存储结果
q = 63
q_list = [q]
while q != 1:
    q = f(q)
    q_list.append(q)

# 绘图
import numpy as np
import matplotlib.pyplot as plt

# 用迭代次数作为x轴,和q_list长度匹配
x = np.arange(len(q_list))
plt.plot(x, q_list)
plt.xlabel('迭代次数')
plt.ylabel('q取值')
plt.show()

运行上述代码即可正常生成迭代过程的变化曲线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:57:00