Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Python fehlerhaftes Programm Iteration » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 10 Beiträge
Dr.Java

Oh,das muss mir runtergefallen sein,danke dir ,ich habe es entfernt. Nur noch eine letzte Frage. Als Fragestellung wird noch angegeben das die Klasse ein bestimmtes Protokoll implementiert,und wie das dann heißt ,ich werde da aber nicht schlau drauß und kann mir auch nichts darunter vorstellen. Vielen lieben Dank nochmal.

lg
eulerscheZahl

code:
1:
print(i,',',end=',')

Du hast ein Komma ergänzt, das da nicht stand. Ansonsten hatte ich die selbe Ausgabe.
Dr.Java

Ohh, ach so ,jetzt gibt das Programm auch was aus.

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:
class Marmelade:
    step=5

    def __init__(self,run,limit):  
        self.run=run
        self.limit=limit

    def __iter__(self):
       return self

    def __next__(self):
        self.run +=self.step
        if self.run > self.limit:
            raise StopIteration
        return self.run

jam=Marmelade(32,45)
for i in jam:
    print(i,',',end=',')
    for i in jam:
        print(2*i,',',end=',')

print("Empty!")

>>>import marmelade
37 ,,84 ,,Empty!

Das wär dann die richtige Ausgabe oder? So oder so, vielen lieben Dank.

lg
eulerscheZahl

Das __init__ hättest du aber einfach lassen sollen. Du hast self.run zu self.start gemacht, obwohl später im Code self.run verwendet wird.
Und bei next hast du die Methodensignatur geändert. Wenn sich ein anderer Programmierer darauf verlässt, funktioniert sein Code dann nicht mehr.
Dr.Java

Ach so , ich war jetzt nur unsicher ,weil ich ein Beispiel gesehen habe in der das mit += problemlos geklappt hat,war natürlich ein anderer Zusammenhang,hat mich aber trotzdem stutzig gemacht, dennoch danke,dann sieht das jetzt so aus.

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:
class Marmelade:
    step=5

    def __init__(self,start,limit):  #variable ergänzen,korrigieren
        self.start=start
        self.limit=limit

    def __iter__(self):
       return self

    def __next__(self,step):
        self.run +=self.step  #self. ergänzen
        if self.run > self.limit:
            raise StopIteration
        return self.run

jam=Marmelade(32,45)
for i in jam:
    print(i,',',end=',')
    for i in jam:
        print(2*i,',',end=',')

print("Empty!")

lg
eulerscheZahl

self.run += self.step
3 Zeilen später hast du das nochmal mit self.run.
Dr.Java

Leider Doppelpost,aber ich muss gestehen das ich nicht dahinter komme. Ich habe geschaut,recherchiert und ausprobiert,keine Ahnung,sieht für mich korrekt aus.Ich schaue aber noch weiter.

lg
Dr.Java

Ich ging davon aus das das Wert zuweisen am Anfang, da steht step=5 ausreichen würde.
Zitat:
code:
1:
self.run +=step
Wie müsste der Zugriff korrekt lauten?

Das ist also auch falsch,hab ich schon befürchtet.Konkret springt mir jetzt kein Fehler ins Auge.Ich werde bei Gelegenheit,morgen, noch mal schauen.

lg
eulerscheZahl

code:
1:
self.run +=step

Wo ist step definiert? Wie müsste der Zugriff korrekt lauten?
Dr.Java

Oh ,ah so,ich war jetzt nur auf die Marmelade fixiert. Danke,ich hab es korrigiert,das war wohl auch tatsächlich ein Fehler meinerseits.
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:
class Marmelade:
    step=5

    def __init__(self,start,limit):  #variable ergänzen,korrigieren
        self.start=start
        self.limit=limit

    def __iter__(self):
       return self

    def __next__(self):
        self.run +=step
        if self.run > self.limit:
            raise StopIteration
        return run

jam=Marmelade(32,45)
for i in jam:
    print(i,',',end=',')
    for i in jam:
        print(2*i,',',end=',')

print("Empty!")

AttributeError: 'Marmelade' object has no attribute 'run'

Hm das ganze funktioniert immer noch nicht fehlerfrei,das hat wenn ich richtig sehe aber weniger mit jam,Marmelade zu tun ,sondern bezieht sich jetzt erstmal nur auf next.Das zusätzliche definieren von run,neben self bringt leider nichts,aber ich schaue nochmal.

lg
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen.