PYTHON : TypeError: can't multiply sequence by non-int of type 'float'

0

Witam,
Mam problem z float'ami w pythonie. Dodam tylko że jest to mój pierwszy program w pythonie, jednak dobrze znam c++ więc programowanie obce mi nie jest.
Program wywala mi taki oto błąd:

File "C:\Users\mkuch\source\repos\PythonApplication1\PythonApplication1\PythonApplication1.py", line 39, in <module>
f2 +=y[0] * f1
TypeError: can't multiply sequence by non-int of type 'float'

Problem pewnie jest banalny jednak nie znalazłem nic co mogło by mi jakoś pomóc zrozumieć ten problem.

A oto ten kod:

import numpy as np
import matplotlib.pyplot as plt

f1 = float(1.0)
f2 = float(0.0)
j = 0
c = 1
ile_punktow = 1
k =float(-5)
x = []
y = []
yp = []
f = []
p = []
print ("wprowadz rzad")
rzad = int(input())
print ("ile punktow")
ile_punktow = int(input())
print ("wprowadz kolejne wartosci x")
for i in range(ile_punktow):
	x.insert(i, float(input()))
print("wprowadz odpowiadajace wartosci y")
for i in range(ile_punktow):
	y.insert(i,float(input())),
	yp.insert(i,y[i]),
while k <= 5 :
	for i in range(rzad):
		y.insert(i, yp[i]),
	f.insert(c, y[0])
	j = 1
	f2 = float(0)
	while rzad != 1:
		for i in range(rzad - 1):
			p.insert(i, ((y[i + 1] - y[i]) / (x[i + j] - x[i]))),
			y.insert(i, p[i]),
		f1 = 1
		for i in range(j):
			f1 = f1*(k - x[i]),
		f2 +=y[0] * f1
		rzad = rzad - 1
		j = j + 1
	f.insert(c, f[c] + f2)
	print(f[c])
	k = k + 0.1
	c = c +1
0
 f1 = f1*(k - x[i]),

ten przecinek tam po coś?

0

temat mogę już zamknąć poradziłem sobie z problemem i były to właśnie te przecinki i brak zrozumienia po co one występowały

0

Tak na marginesie, kodu tak pisanego nie da się czytać.
Patrz tylko na:

ile_punktow = int(input()) 
print ("wprowadz kolejne wartosci x")
for i in range(ile_punktow): 
    x.insert(i, float(input()))

Wersja Pythonowa (która na marginesie też jest szybsza):

ile_punktow = int(input("wprowadź ilość punktów i kolejne wartości x: "))
x = [float(input()) for _ in range(ile_punktow)]

Albo

for i in range(j): 
    f1 = f1*(k - x[i])

wystarczy zmienić na:

for element in x:
    f1 *= k - element

Użyłeś też pętli while, a wszystko co z nią robisz to powtórzenie zawartości pętli ileś krotnie - to jest zastosowanie pętli for (z ujemnym krokiem, np list(range(4, 0, -1)) == [4, 3, 2, 1]).

1 użytkowników online, w tym zalogowanych: 0, gości: 1