vielleicht ist mein Problem total lächerlich, aber ich finde keine Lösung im Netz und meine Lösungsversuche brachten nur eine Errorausgabe.
Und zwar möchte ich, dass nach der Inputeingabe die jeweilige Variable ausgegeben wird.
@Lou Cyphr3: Die Lösung wäre die Werte in ein Wörterbuch (`dict`) zu stecken und die Eingabe für den Zugriff zu verwenden. Oder in eine Liste — dann muss man die Eingabe in einen Index umrechnen.
Die ``for``-Schleife würde man in Python so nicht schreiben denn `i` ist überflüssig wenn man *direkt* über die Elemente von `z` iterieren würde:
z = ['A: eins', 'B: zwei', 'C: drei']
print('Hallo')
for i in range(0,3):
print(z[i])
abc = ['A', 'B!', 'C']
while True:
try:
abc = input('Wähle eine Vorgabe')
if x in abc:
print(abc[0])
break
else:
print('nochmal')
except NameError:
print('Das hat wohl nicht geklappt!')
Ich bin jetzt soweit gekommen das es mir bis zur input-anweisung keinen Fehler ausspuckt,danach kommt aber egal was ich angebe, die except-print. wie schaffe ich es aber, dass der user nach der eingabe von a,b oder c die jeweilige möglichkeit von abc angezeigt bekommt?
@Lou Cyphr3: es ist unsinnig die Exception NameError abzufangen, da ein NameError fast immer ein Programmierfehler ist und in den restlichen Fällen ein Designfehler. Man muß also immer das Programm reparieren, wenn diese Exception auftritt. In Deinem try-Block kann eigentlich keine Exception auftreten, die man sinnvoll abfangen kann, also weg mit dem try: und dem except-Block. Dann bekommst Du auch die Exception zu sehen, die Dir hilft den Programmierfehler zu finden.
okay danke, das läuft jetzt ohne fehler, jedoch ist mir immer noch nicht klar, wie es mir nach der inputeingabe von a,b,c mir die jeweilige, aus der abc liste ausgibt. in dem obigen beispiel ist mir klar, dass ich nur eine Variante reingeschrieben habe, aber die läuft auch nicht. mir ist nicht klar wie ich die jeweiligen stellen einer liste abfragen kann.
@Lou Cyphr3: Du hast die Eingabe vom Benutzer, einen Buchstaben von 'a' bis 'c' — wir gehen erst einmal davon aus der Benutzer gibt nichts falsches ein — und eine Liste mit Elementen an den Indexen 0 bis 2. Du musst also den Buchstaben in einen passenden Index überführen. Dazu könnte man beispielsweise nutzen das Rechner letztendlich nur etwas mit Zahlen anfangen können und auch Buchstaben/Zeichen intern als Zahlen repräsentiert werden. Und das es eine Funktion (`ord()`) gibt, die einem die Zahl liefert die in Unicode für ein gegebenes Zeichen definiert ist. Wenn Du Dir diese Zahlen für 'a', 'b', und 'c' anschaust, solltest Du auf eine ganz simple Rechenvorschrift kommen wie man von diesen Zahlen auf 0, 1, und 2 kommt.
Wenn das steht, könnte man auch den Zahlenbereich prüfen ob der tatsächlich zwischen 0 und der Länge der Liste minus 1 liegt, falls der Benutzer ein Zeichen ausserhalb des Bereichs eingegeben hat. Den Fall das er kein oder mehr als ein Zeichen eingibt, sollte man auch entsprechend behandeln. Hier könnte dann eine Ausnahmebehandlung Sinn machen, denn `ord()` löst eine Ausnahme aus wenn man nicht genau ein Zeichen übergibt.
Ich habe übrigens Kleinbuchstaben angenommen. Damit der Benutzer Gross- oder Kleinbuchstaben eingeben kann, würde ich die Eingabe in Kleinbuchstaben umwandeln. Es sei denn Du möchtest das der Benutzer tatsächlich nur Grossbuchstaben verwenden darf.
Was man auch noch machen könnte, wäre die Buchstaben vor den Texten in `z` nicht in die Liste zu schreiben, sondern bei der Ausgabe erst zu generieren. Damit schliesst man eine Fehlerquelle aus und es wird auch einfacher irgendwo ein Element einzufügen oder zu entfernen, weil man dann nicht mehr bei allen Folgeelementen den Buchstaben per Hand anpassen muss.