Liste als Eingabe

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pc_doctor
User
Beiträge: 3
Registriert: Montag 21. April 2014, 16:28

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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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 :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@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
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten