Hallo,
ich möchte gerne, dass der Benutzer eine Liste mit Zahlen eingeben kann, sodass die Zahlen innerhalb der Liste mittels einer for-Schleife summiert werden. Und das Ergebnis zurückgegeben wird.
Leider weiß ich nicht, wie ich das programmieren soll, da ich nicht weiß, wie man dem Interpreter sagen soll, dass es sich bei der Eingabe um eine Liste handelt.
Könnte mir bitte einer helfen ?
Vielen Dank im Voraus.
Liste als Eingabe
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Da gibt es verschiedene Möglichkeiten...pc_doctor hat geschrieben: Leider weiß ich nicht, wie ich das programmieren soll, da ich nicht weiß, wie man dem Interpreter sagen soll, dass es sich bei der Eingabe um eine Liste handelt.
... Du könntest dem Benutzer vorschreiben, dass er die Zahlen Komma separiert eingeben muss (Oder durch sonst ein beliebiges Trennzeichen). Diesen String kannst Du dann recht einfach *parsen*.
... Du könntest den Benutzer auch so lange hintereinander *eine* Zahl eingeben lassen, bis er die Eingabe über ein Codewort oder eine ähnliche Konvention (z.B. leere Eingabe!) beendet. Damit fällt das "Parsen" dann natürlich einfacher, weil Du im Grunde nur noch den String in eine Zahl wandeln musst.
... Du könntest dem Benutzer auch vorschreiben, dass er einen gültigen JSON-String eingeben muss; denn dafür gibt es dank des ``json``-Moduls in der Standard-Lib bereits einen fertigen Parser, der Dir mit nur einem Aufruf eine Liste von Zahlen generiert. Anbei mal ein Beispiel:
Code: Alles auswählen
import json
raw_data = "[1, 2, 3, 4, 42]"
json.loads(raw_data)
> [1, 2, 3, 4, 42]
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
@pc_doctor
Und noch eine von vielen Möglichkeiten:
mutetella
Und noch eine von vielen Möglichkeiten:
Code: Alles auswählen
>>> import re
>>> user_input = '1, 2 34 5 and 6'
>>> re.findall(r'\d+', user_input)
['1', '2', '34', '5', '6']
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )