Pętla for

0

Chciałem wyliczyć wartość jakiejś funkcji w x'ach, które będą floatami za pomocą pętli for. Problem w tym, że nie rozumiem za bardzo jak działa ta pętla w pythonie. Jak zdefiniować krok w forze tak, żeby pętla "rozumiała" o co chodzi i czy da się to wgl zrobić?

def printfx(fx, xp=-1, xk=1, lp=10):
    for i in range(xp,xk,math.fabs((xk-xp)/lp)):
        print(i, fx(i))

def main():
    printfx(lambda x: math.cos(x))
0

Pętla for w Pythonie działa tak, że jakaś zmienna (w Twoim przypadku i) przybiera po kolei wszystkie wartości z jakiegoś iteratora, lub obiektu po którym można iterować, jak na przykład lista. W Twoim kodzie, Starasz sie iterować po obiekcie range, range(start, stop, step) zmienna idzie od start do < stop, z krokiem step, np.:

for x in range(1, 6, 2):
    print(x)
# -> 1
# -> 4

Natomiast co Ty chcesz zrobić jest dla mnie niejasne, Wytłumacz dokładnie.

0
def funkcja(f, xp=-1, xk=1, lp=10):
    x = xp
    krok = math.fabs((xk - xp) / 7)
    while x <= xk:
        print(x, f(x))
        x += krok
0

w while'u tak to ma wyglądać, zastanawiam się czy w forze można to uzyskać.

1

Twoim problemem jest to, że step jest typu int. Możesz to ominąć na kilka sposobów, np. stworzyć listę o odpowiednim stepie i po niej iterować. Ale ja polecam użyć numpy

import math
import numpy as np

def printfx(fx, xp=-1, xk=1, lp=10):
    for i in np.arange(xp, xk, (xk-xp) / lp):
        print(i, fx(i))

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