2015-10-23 1 views
0

Любая помощь очень ценится. У меня есть списки в программе, одна из которых содержит значения приближения линейной функции для различных значений X. Другая, содержащая остатки этих точек к фактическим значениям y. Списки определяются одинаково в уважаемых функциях, а операторы печати одинаковы. Однако для остаточного оператора печати я все время получаю сообщение об ошибке: float object is iterable.float объект не повторяется в заявлении на печать для списка -python

Я не понимаю, почему это так или почему этот объект отличается от того, который определен в линейной функции.

Вот код:

final_values = [] 
def y_strength(X): 
    for x in X: 
     f = (m * x) + b 
     global final_values 
     final_values.append(f) 
    return final_values 

final_values = y_strength(X)   

strength = [] 
final_r = [] 
def r_strength(Y): 
    global strength 
    for y in Y: 
     r = y - lin_funct 
     strength.append(r) 

    for r in strength: 
     r = r ** 2 
     final_r.append(r) 

    relationship = sum(final_r) 
    return relationship 
strength = r_strength(Y) 

def(print()): 
    print("f(x):","\t".join(str(round(float(c),2)) for c in final_values)) 
    print("-"*70) 
    print("R: ","\t".join(str(round(float(c),2)) for c in strength)) 

ответ

0

В первом print() вызова, у вас есть for c in final_values. Эта ссылка исходит от вызова y_strength, который собирает и возвращает list. Это можно повторить.

Во втором print() звоните, у вас есть for c in strength. Эта ссылка исходит из вызова r_strength, который вычисляет и возвращает сумму, которая является числом. Это невозможно повторить.

Чтобы исправить это, просто не итерацию над ней:

print("R: ", round(strength, 2)) 
+0

Извините, но на весь сайт я не знаю, как получить код, но я просто разделил функцию r_strength на две разные функции. один для силы и один для final_r –

0

Вы замене strength значение, которое первоначально список с sum из другого списка (с помощью возвращаемого значения функции).

Я не уверен, почему вы используете глобальные переменные вообще, вы можете просто перенести начальные определения внутри функций, так как вы уже возвращаете список и назначаете его по предыдущей ссылке.

+0

В программе есть другие функции. Кроме того, если не глобальный, то я столкнулся со многими проблемами, узнав его в заявлении на печать. Он работает с глобальными –