2015-03-28 3 views
0

Я уже пробовал много способов решить эту проблему, но я не могу найти ответ на эту ошибку:TypeError: объект «межд» типа не имеет LEN()

TypeError: object of type 'int' has no len()

Вот мой код:

def CalculaDeltaT(Tn, Tm, Fr, T, P): 
    return (Tn * Fr * T) - (P * T) - (Tm * T) 

deltaT = CalculaDeltaT 

def CalculaDeltaR(Rn, Fv, Rm, Mt, R): 
    return (Rn * Fv * R) - (Rm * Mt * R) 

deltaR = CalculaDeltaR  

def CalculaDeltaV(Vn, Vm, Mr, V): 
    return (Vn * V) - (Vm * Mr * V) 

deltaV = CalculaDeltaV 

import matplotlib.pyplot as plt 

tmax = 10 
Tp = [0] * tmax 

Tn = 0.2 
Fr = 0.6 
Tm = 0.3 
P = 0.1 

T = [0] * tmax 

T[0] = 10 

Rn = 0.4 
Fv = 0.6 
Rm = 0.1 
Mt = 0.2 

R = [0] * tmax  
R[0] = 10 

Vn = 0.5 
Vm = 0.8 
Mr = 0.8 

V = [0] * tmax  
V[0] = 10 

print(len(V)) 
print(len(R)) 
print(len(T)) 
print(len(Tp)) 

for i in range (1, tmax): 
    T[i] = T[i-1] + deltaT(Tn, Fr, Tm, T[i-1], P) 
    Tp[i] = i 

plt.plot(Tp, T) 
plt.axis(0, 10, 10, 1000) 
plt.ylabel('T[Tubarões]') 
plt.xlabel('Tempo[em anos]') 
plt.title(r'T em função de Tempo') 
plt.show() 

Я пробовал отлаживать, но я не мог найти проблему. Я студент, поэтому мне жаль, если это основной вопрос.

+1

, какая линия бросает ошибку ? – riotbit

+2

Включите полную ошибку. –

+0

Посмотрите документацию для функции, которую вы вызываете в строке, которая выдает ошибку. Также рассмотрите вопрос о том, как эта функция используется в pyplot [tutorial] (http://matplotlib.org/users/pyplot_tutorial.html). Вы делаете что-то отличное от того, как должна использоваться функция. Видишь? – user2357112

ответ

2

Вы получаете эту ошибку:

Traceback (most recent call last): 
    File "/home/PycharmProjects/experiments.py", line 8, in <module> 
    plt.axis(0, 10, 0, 100) 
    File "/home/python3/lib/python3.4/site-packages/matplotlib/pyplot.py", line 1417, in axis 
    v = ax.axis(*v, **kwargs) 
    File "/home/python3/lib/python3.4/site-packages/matplotlib/axes/_base.py", line 1337, in axis 
    if len(v) != 4: 
TypeError: object of type 'int' has no len() 

axis(v) документация:

.... sets the min and max of the x and y axes, with v = [xmin, xmax, ymin, ymax]

....if len(*v)==0 , you can pass in xmin, xmax, ymin, ymax as kwargs selectively to alter just those limits without changing the others.

Вы должны либо использовать plt.axis([0, 10, 0, 10]) или plt.axis(xmin=0, xmax=10, ymin=0, ymax=10).

(я также скорректировал ymin и ymax к чему-то, что бы показать текущие данные, так как y получает меньшие значения, чем в пределах установленных вами)

Результат:

enter image description here

Смежные вопросы