hilfe mit input

Code-Stücke können hier veröffentlicht werden.
Lou Cyphr3
User
Beiträge: 10
Registriert: Donnerstag 6. Juli 2017, 00:04

hilfe mit input

Beitragvon Lou Cyphr3 » Sonntag 16. Juli 2017, 02:28

Hallo,

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.

  1. a = ('Wo')
  2. b = ('Geh')
  3. c = ('Wie ')
  4.  
  5. print('Hallo ')
  6.      
  7. z = ['A: Sinn', 'B: Geld', 'C: Coco']
  8.  
  9. for i in range(0,3):
  10.     print(z[i])
  11.  
  12. input()
  13.  


Weiß wer die Lösung?
Zuletzt geändert von BlackJack am Sonntag 16. Juli 2017, 08:16, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Cours, camarade, le vieux monde est derrière toi!
Lou Cyphr3
User
Beiträge: 10
Registriert: Donnerstag 6. Juli 2017, 00:04

Re: hilfe mit input

Beitragvon Lou Cyphr3 » Sonntag 16. Juli 2017, 03:40

Genau genommen lautet meine Frage dazu : Wie binde ich eine if-Abfrage in die input-Funktion ein=
Cours, camarade, le vieux monde est derrière toi!
Benutzeravatar
BlackJack
Moderator
Beiträge: 32710
Registriert: Dienstag 25. Januar 2005, 23:29
Wohnort: Berlin
Kontaktdaten:

Re: hilfe mit input

Beitragvon BlackJack » Sonntag 16. Juli 2017, 08:20

@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:
  1. for x in z:
  2.     print(x)


Die Klammern um die drei Werte die Du an `a`, `b`, und `c` bindest sind auch überflüssig und sollten weg.
“XML combines all the inefficiency of text-based formats with most of the unreadability of binary formats :-)” — Oren Tirosh, c.l.p, 2002
Lou Cyphr3
User
Beiträge: 10
Registriert: Donnerstag 6. Juli 2017, 00:04

Re: hilfe mit input

Beitragvon Lou Cyphr3 » Mittwoch 19. Juli 2017, 01:03

okay, ich hab jetzt die Werte in eine Liste geschrieben, wobei ich das mit dem index gerade nicht hinbekomme.
hast du noch nen tipp dazu?

Danke
Cours, camarade, le vieux monde est derrière toi!
Lou Cyphr3
User
Beiträge: 10
Registriert: Donnerstag 6. Juli 2017, 00:04

Re: hilfe mit input

Beitragvon Lou Cyphr3 » Mittwoch 19. Juli 2017, 02:19

  1. z = ['A: eins', 'B: zwei', 'C: drei']
  2.  
  3. print('Hallo')
  4.      
  5. for i in range(0,3):
  6.     print(z[i])
  7.  
  8. abc = ['A', 'B!', 'C']
  9. while True:
  10.     try:
  11.         abc = input('Wähle eine Vorgabe')
  12.         if x in abc:
  13.             print(abc[0])
  14.  
  15.             break
  16.         else:
  17.             print('nochmal')
  18.  
  19.     except NameError:
  20.         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?
Cours, camarade, le vieux monde est derrière toi!
Sirius3
User
Beiträge: 6006
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: hilfe mit input

Beitragvon Sirius3 » Mittwoch 19. Juli 2017, 07:13

@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.
Lou Cyphr3
User
Beiträge: 10
Registriert: Donnerstag 6. Juli 2017, 00:04

Re: hilfe mit input

Beitragvon Lou Cyphr3 » Donnerstag 20. Juli 2017, 07:24

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.
Cours, camarade, le vieux monde est derrière toi!
Benutzeravatar
BlackJack
Moderator
Beiträge: 32710
Registriert: Dienstag 25. Januar 2005, 23:29
Wohnort: Berlin
Kontaktdaten:

Re: hilfe mit input

Beitragvon BlackJack » Donnerstag 20. Juli 2017, 09:07

@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.
“XML combines all the inefficiency of text-based formats with most of the unreadability of binary formats :-)” — Oren Tirosh, c.l.p, 2002

Zurück zu „Codesnippets“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder