Seite 1 von 1
Liste als Eingabe
Verfasst: Freitag 25. April 2014, 15:49
von pc_doctor
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.
Re: Liste als Eingabe
Verfasst: Freitag 25. April 2014, 16:30
von Hyperion
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.
Da gibt es verschiedene Möglichkeiten...
... 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]
Es gibt also viele viele Möglichkeiten

Re: Liste als Eingabe
Verfasst: Freitag 25. April 2014, 18:47
von mutetella
@pc_doctor
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']
mutetella