Listen abfragen per input

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
alfredsc
User
Beiträge: 5
Registriert: Donnerstag 7. Januar 2021, 18:49

Hallo,

ich würde gerne per input-Abfrage ein Listenelement ausgeben.
Leider klappt das nicht so, wie ich mir das gedacht habe.
Was mache ich falsch?
Hier ist mein Code:

a = ["a","b","c"]
b = ["d","e","f"]
c = ["g","h","i"]
buchstabe = input ("Buchstabe eingeben: ")
zahl = int(input ("Zahl eingeben: "))
print (buchstabe[zahl])

Ich dachte, wenn ich z.B. bei buchstabe b und bei zahl 1 eingebe, dann sollte Element das 2. Element der Liste b , also "e" erscheinen, aber stattdessen erscheint nur eine Fehlermeldung:
Traceback (most recent call last):
File "C:\Users\AS\Documents\Codierung ausgeben.py", line 6, in <module>
print (buchstabe[zahl])
IndexError: string index out of range
Wenn ich b und 0 eingebe wird b ausgegeben, aber das ist nicht das Element der Liste, sondern der eingegebene Buchstabe. Wie kann ich Python dazu bringen, sich auf die Liste zu beziehen, bzw. wie könnte ich es lösen, dass es funktioniert?
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Schauen wir uns mal an, was du da machst:
Du bindest eine Eingabe an den Namen "buchstabe" und eine weitere Eingabe an den Namen "zahl".
Danach versuchst du einen Indexzugriff auf "buchstabe". Buchstabe enthält aber das, was eingegeben wurde. Wieso soll denn darauf ein Indexzugriff erfolgen?!?

Du verwendest die falsche (nämlich keine) Datenstruktur. Statt willkürliche Listen zu verwenden und die an beliebige Namen zu binden, möchtest du eigentlich ein dict verwenden mit dem "Namen" der Liste als Schlüssel und der Liste als Wert.
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Woher soll Python wissen, dass Du die Liste b meinst, wenn Du "b" eingibst. Das musst Du schon explizit sagen

Code: Alles auswählen

daten = dict(
    a=["a","b","c"],
    b=["d","e","f"],
    c=["g","h","i"],
}
buchstabe = input("Buchstabe eingeben: ")
zahl = int(input("Zahl eingeben: "))
print(daten[buchstabe][zahl])
alfredsc
User
Beiträge: 5
Registriert: Donnerstag 7. Januar 2021, 18:49

Vielen Dank, so funktioniert es (nur in der vierten Zeile muss eine normale Klammer statt "}" hin.
Antworten