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

Python绘图时range函数报float对象无法解释为整数错误求助

问题根因

Python 内置的 range() 函数仅支持整数类型的起始值、终止值和步长参数,你传入的 1e6、1e5 是浮点型数值,因此触发类型错误。
除此之外你的代码还有两处逻辑错误会导致无输出:

  • 函数f_transition_turbulent定义放在了for循环内部,且return f4语句写在了列表追加操作之前,return后的代码永远不会执行
  • 循环内的代码、列表追加操作的缩进完全错误,不会被正常执行

解决步骤

  1. 替换range()为numpy.arange(),该函数支持浮点参数,适合绘图时生成均匀序列;也可以选择将1e6、1e5强制转换为整数传入range()
  2. 把函数定义移到循环外部,调整代码顺序,调用函数拿到返回值后再追加到列表
  3. 修正所有缩进错误,保证逻辑执行顺序正确

修正后可运行代码

import numpy as np
import matplotlib.pyplot as plt

# 函数定义移到循环外部
def f_transition_turbulent(Re,ftol=0.001, MaxIter=1000):
    error=10
    Iter_num=0
    f0=0.3164/(Re)**0.25
    while error>ftol and Iter_num<MaxIter:
        f4=1/(2*np.log(Re*np.sqrt(f0))-0.8)**2
        error=abs(f4-f0)
        Iter_num=Iter_num+1
        f0=f4
    return f4

f5=[]
r4=[]
# 用np.arange生成序列,也可替换为 range(2300, int(1e6), int(1e5))
for Re in np.arange(2300, 1e6, 1e5, dtype=int):
    f4 = f_transition_turbulent(Re)
    f5.append(f4)
    r4.append(Re)

plt.loglog(r4,f5,color='b',lw=2)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:36:04