Die Auflösung der Rekursion mittels einer while True-Schleife sollte da schon für Verzückung sorgenLeonidas hat geschrieben:Ich finde auch, er sollte hier eine perfekte Lösung posten. Ist eigentlich eine Steilvorlage für ihn
Hilfe beim Quelltext
Grrr, die Vorstellung war so gruselig, dass ich das prophylaktisch mal in Python gelöst habe.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from itertools import imap
def main():
print 'Ganze Zahlen eingeben.'
print ' - Eingabetaste nach jeder Zahl.'
print ' - Leereingabe für Ergebnis.'
values = map(int, iter(raw_input, ''))
print ' + '.join(imap(str, values)), '=', sum(values)
if __name__ == '__main__':
main()
So. Ich hab die Lösung und das ist sie:
Zwar konntet ihr mir nicht wirklich helfen, aber ich danke euch trozdem für eure Zeit.
Code: Alles auswählen
# Addierer.py
# Dieses Programm addiert Zahlen
eingabe = input("Geben Sie eine ganze Zahl ein:")
summe = int(eingabe)
while True:
rechnung = input("Geben Sie eine ganze Zahl ein:")
if rechnung == "":
break
summe = summe + int(rechnung)
eingabe = eingabe + "+" + rechnung
print(eingabe," = ",summe)
Zwar konntet ihr mir nicht wirklich helfen, aber ich danke euch trozdem für eure Zeit.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wieso hast Du den Eingabe- und Berechnungscode doppelt, nämlich noch einmal *vor* der Schleife? Das ist ziemlich sinnlos und macht das Programm schwerer wartbar. Entferne das schnell wieder und lasse es doch so, wie Du es schon mal hattest!Dupstre hat geschrieben:So. Ich hab die Lösung und das ist sie:Code: Alles auswählen
eingabe = input("Geben Sie eine ganze Zahl ein:") summe = int(eingabe) while True: ...
Also das empfinde ich ja nun schon fast als Beleidigung. Wie bist Du denn auf die ZeileDupstre hat geschrieben: Zwar konntet ihr mir nicht wirklich helfen, aber ich danke euch trozdem für eure Zeit.
Code: Alles auswählen
eingabe = eingabe + "+" + rechnung
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Ich werde es so lassen wie es ist, da man sonst nicht wirklich die Zeichenketten verbinden kann so wie man es muss.
Auf die Zeile bin ich nicht durch euch gekommen sondern durch die Musterlösung von meinem Lehrer.
Und der Rest hat mir auch nicht wirklich geholfen, wiel ich letzten endes nicht auf eine Lösung kam und erst auf die Musterlösung von meinem Lehrer warten musste.
Ihr habt zwar veruscht mir zu helfen, aber ihr habt einfach eine Reihe von "Befehlen" benutzt die ich nunmal nicht kenne und das hat mir nichts gebracht!
Auf die Zeile bin ich nicht durch euch gekommen sondern durch die Musterlösung von meinem Lehrer.
Und der Rest hat mir auch nicht wirklich geholfen, wiel ich letzten endes nicht auf eine Lösung kam und erst auf die Musterlösung von meinem Lehrer warten musste.
Ihr habt zwar veruscht mir zu helfen, aber ihr habt einfach eine Reihe von "Befehlen" benutzt die ich nunmal nicht kenne und das hat mir nichts gebracht!
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wenn das die Musterlösung ist... naja... bitte merke Dir dazu, dass da lauter unschöne Sachen drin stehen.Dupstre hat geschrieben: Auf die Zeile bin ich nicht durch euch gekommen sondern durch die Musterlösung von meinem Lehrer.
Dann lies Dir mal meine Beiträge durch. Ich sehe da nicht, inwiefern ich da irgend etwas benutzt habe, was Du noch nicht kennst / benutzen darfst. Ich habe Dich versucht zu genau folgender Lösung zu leiten:Dupstre hat geschrieben: Ihr habt zwar veruscht mir zu helfen, aber ihr habt einfach eine Reihe von "Befehlen" benutzt die ich nunmal nicht kenne und das hat mir nichts gebracht!
Code: Alles auswählen
summe = 0
rechnung = ""
while True:
eingabe = input("Geben Sie eine Zahl ein:")
if not eingabe:
break
summe += int(eingabe)
rechnung += eingabe + "+"
print(rechnung[:-1], "=", summe)
Einzig das Slicing im `print` mag etwas neues für Dich sein; das muss sein, um das letzte "+" zu eliminieren. Mit ein wenig Aufwand (einer zusätzlichen Variablen, die einen Statusflag a la "erster Durchlauf" enthält) könnte man sogar darauf verzichten und mit den bisher bekannten Sprachkonstrukten auskommen.
Ganz im Ernst: Du hast keinen Plan und hast Dir anscheinend auch keine Mühe gegeben, die Kommentare von uns nachzuvollziehen. Du hast in zig Postings Code gezeigt, der eine sonderbare Entwicklung aufzeigte. Du hast bereits sinnvolle Code-Abschnitte von Posting zu Posting wieder entfernt und entweder ganz weggelassen oder durch neue, schlechte Konstrukte ersetzt. Von einer Baustelle bist Du zur nächsten gesprungen, das bereits umgesetzte hast Du dabei aber stets aus den Augen verloren. So wird das nix mit dem Programmieren lernen Hast Du überhaupt kleinere Abschnitte in einer Shell nachvollzogen? Ich vermute, dass nein und dass Du stets nur hast Dein Script komplett laufen lassen. Das ist der falsche Weg. Probiere kleinere Sachen stets in einer Shell aus, wenn Du Dir nicht sicher bist, wie etwas funktioniert.
Letztlich ist es mir und uns ziemlich egal, wie Du in der Schule abschneidest. Aber wenn Du Deine Behauptungen tatsächlich ernst meinst, dann solltest Du Dich da noch einmal dran setzen. Denn verstanden hast Du das offensichtlich immer noch nicht...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert