我如何解决此错误(索引器:列表索引超出范围)?

2024-05-19 02:14:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中做了以下工作。我试图用Python来解一个方程,并通过绘图来显示结果。当我运行以下代码时,我得到以下错误:

错误:

Traceback (most recent call last):
  File "C:\Users\raineen\Desktop\Raneen_Python\Sigma_theta_c.py", line 44, in <module>
    segma.append((((Tt*Ct[count])/(2*t0*lambda1))*((m.log(item*r))**Nt[count]))+(((Tb*Cb)/(2*t0*lambda1))*((m.log(item*r))**Nb))+((Tt*Ct[count])/(t0*lambda1*(Nt[count]+1)))*((m.log(item*r))**(Nt[count]+1)-(m.log(item*R0))**(Nt[count]+1))+ ((Tb*Cb)/(t0*lambda1*(Nb+1)))*((m.log(item*r))**(Nb+1)-(m.log(item*R0))**(Nb+1)))
IndexError: list index out of range

我有三个列表,我同时循环浏览它们,它们是:

t = [x/100 for x in range(1, 201)] # [0.01,0.02,0.02,..........,2]

Ct=  [126.0, 127.82549463360013, 129.67743712955985, 131.55621066590138, 133.46220397215035, 135.39581140976628, 137.35743305373825, 139.34747477536274, 141.36634832622116, 143.41447142337327]

a=  [39.960039960039964, 19.960079840319363, ..........]

请帮我解决这个问题好吗

Python

import math as m
import matplotlib.pyplot as plt

lambda1 = 1
t = [x/100 for x in range(1, 201)]
t0 = 2
Tt = 1.5
Kt = 126
Kb = 1261
Rt = 5
Nt = [x/10 for x in range(0, 10)]
Nb = 0.36
Tb = 0.5
r = 6.5


R0 = Rt + t0
z = 2/m.sqrt(3)
#Ct = Kt*(z**Nt)
Cb = Kb*(z**Nb)


print('t= ', t)
print('Nt= ', Nt)
Ct = []
for n in Nt:
    Ct.append(Kt*(z**n))

Rm = []
for j in t:
    Rm.append(5+(j/2))

print('Rm= ',Rm)
print('Ct= ',Ct)

a = []
for k,i in zip(Rm,t):
    a.append(t0/(k*i))
    print(k, i)
print('a= ',a)

segma = []
for count, item in enumerate(a):
    segma.append((((Tt*Ct[count])/(2*t0*lambda1))*((m.log(item*r))**Nt[count]))+(((Tb*Cb)/(2*t0*lambda1))*((m.log(item*r))**Nb))+((Tt*Ct[count])/(t0*lambda1*(Nt[count]+1)))*((m.log(item*r))**(Nt[count]+1)-(m.log(item*R0))**(Nt[count]+1))+ ((Tb*Cb)/(t0*lambda1*(Nb+1)))*((m.log(item*r))**(Nb+1)-(m.log(item*R0))**(Nb+1)))

print('Sigma_theta_c = ', segma)

##for i in segma:
##    print(i)

plt.plot(t,segma)

plt.xlabel('t')
plt.ylabel('Sigma_theta_c')


plt.show()

下面是方程式:

enter image description here


Tags: inlogforcountitemtbprintct
2条回答

解决类似问题的一般方法是查看您正在访问和创建的列表的长度。你能分享完整的方程式和你的领域模型吗?你到底在解决什么问题?期望的输入和输出是什么

莱恩(t)#200

len(segma)#10

plt.plot(segma)工作并实际创建绘图

enter image description here

我已经检查了您的代码,问题是CtNt数组的长度是10,而列表a的长度是200。 在本例中,您正在枚举一个列表a,并使用count访问列表CtNt中的元素,这会导致IndexError

相关问题 更多 >

    热门问题