Python Fibonacci Iterator Fehler

Neue Frage »

Auf diesen Beitrag antworten »
Dr.Java Python Fibonacci Iterator Fehler

Hallo. Ich arbeite mich seit einiger Zeit in Python ein und bin jetzt auf ein Problem gestoßen ,und ich komme schlicht nicht dahinter wo mein Fehler liegt.

Zunächst sollte man eine gewöhnliche Python-Datei erstellen.

class Fib:
'''iterator that yields numbers in the Fibonacci sequence'''

def _init_(self, max):
self.max= max

def _iter_(self):
self.a=0
self.b=1
return self

def _next_(self):
fib = self.a
if fib > self.max:
raise StopIteration
self.a, self.b = self.b, self.a + self.b
return fib

Dann sollte man sie unter dem Namen fibonacci2 im Verzeichnis speichern und folgendes im Shell eingeben.

>>>import fibonacci2
>>>fib = fibonacci2.Fib(100)

Der Import funktioniert problemlos ,aber wenn ich die zweite Zeile eingebe bekomme ich eine Fehlermeldung.

Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
fib = fibonacci2.Fib(100)
TypeError: object() takes no parameters

Und ich stehe jetzt vollkommen auf dem Schlauch,ich habe es auch schon mit neugestarteter Shell und Neuschreiben der Datei versucht ,ich bekomme trotzdem immer die selbe Fehlermeldung. Danke schonmal für Tipps und Hinweise.

lg
 
Auf diesen Beitrag antworten »
eulerscheZahl RE: Python Fibonacci Iterator Fehler

Wenn ich bei deinem Beitrag auf zitieren klicke, sehe ich eine fehlerhafte Einrückung (wenn du code-Tags verwendest, kann ich mir den Umweg sparen).
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
class Fib:
    '''iterator that yields numbers in the Fibonacci sequence'''

    def __init__(self, max):
        self.max = max
        self.a = 0
        self.b = 1

    def __iter__(self):
        return self

    def next(self):
        fib = self.a
        if fib > self.max:
            raise StopIteration
        self.a, self.b = self.b, self.a + self.b
        return fib

self.a und self.b habe ich in den Konstruktor verschoben und init und iter je 2 Unterstriche verpasst.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
>>> import fibonacci2
>>> fib = fibonacci2.Fib(100)
>>> fib.next()
0
>>> fib.next()
1
>>> fib.next()
1
>>> fib.next()
2
>>> fib.next()
3
>>> fib.next()
5
>>> fib.next()
8
>>> fib.next()
13
>>> fib.next()
21
>>> fib.next()
34
>>> fib.next()
55
>>> fib.next()
89
>>> fib.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "fibonacci2.py", line 15, in next
    raise StopIteration
StopIteration
Auf diesen Beitrag antworten »
Dr.Java RE: Python Fibonacci Iterator Fehler

Ach so, danke dir ,jetzt klappt es. Ich war mir nicht ganz so sicher wegen den Strichen,wie und ob man einen verlängerten Strich erzeugen kann,aber jetzt hab ich es raus.

PS. Wegen den Codes,alles klar, ich werde sie das nächste mal nutzen.


lg
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »