Python3 Dictionary iteriert durch Werte?

11

Hey alle, ich versuche ein Programm in Python zu schreiben, das als Quizspiel fungiert. Ich habe am Anfang des Programms ein Wörterbuch erstellt, das die Werte enthält, nach denen der Benutzer gefragt wird. Es ist so eingerichtet:

%Vor%

Also habe ich eine Funktion definiert, die eine for -Schleife verwendet, um die Wörterbuchschlüssel zu durchlaufen und nach Eingabe vom Benutzer fragt, und vergleicht die Benutzereingabe mit dem Wert, der mit dem Schlüssel übereinstimmt.

%Vor%

Das funktioniert gut Ausgabe sieht so aus:

%Vor%

Was ich also gerne tun möchte, ist eine separate Funktion, die die Frage umgekehrt stellt, dem Benutzer die Auflösungsnummern gibt und der Benutzer den Namen des Anzeigestandards eingibt. Also möchte ich eine for-Schleife machen, aber ich weiß nicht wirklich, wie man (oder wenn man es überhaupt kann) über die Werte im Wörterbuch iteriert und den Benutzer auffordert, die Schlüssel einzugeben.

Ich hätte gerne eine Ausgabe, die ungefähr so ​​aussieht:

%Vor%

Ich habe versucht, mit for value in PIX0.values() zu spielen, und das erlaubte mir, die Wörterbuchwerte zu durchlaufen, aber ich weiß nicht, wie man das benutzt, um die Antworten des Benutzers gegen die Wörterbuchschlüssel zu "überprüfen". Wenn jemand helfen könnte, würde es geschätzt werden.

BEARBEITEN: Tut mir leid, ich benutze Python3.

    
Ben Williams 25.05.2015, 21:48
quelle

5 Antworten

24

Abhängig von Ihrer Version:

Python 2.x:

%Vor%

Python 3.x:

%Vor%

Sie sollten sich auch angewöhnen, die neue String-Formatierungssyntax ( {} anstelle von % operator) von PEP 3101 :

zu verwenden

Ссылка

    
chown 25.05.2015, 21:59
quelle
2

Sie könnten nach dem entsprechenden Schlüssel suchen oder Sie könnten das Wörterbuch "invertieren", aber wenn Sie überlegen, wie Sie es verwenden, wäre es am besten, wenn Sie erst einmal über Schlüssel / Wert Paare iteriert würden was du mit items() machen kannst. Dann haben Sie beide direkt in Variablen und brauchen überhaupt keine Suche:

%Vor%

Sie können natürlich beide Möglichkeiten verwenden.

Oder wenn Sie das Wörterbuch für etwas anderes nicht brauchen, können Sie das Wörterbuch ablegen und eine gewöhnliche Liste von Paaren haben.

    
Stefan Pochmann 25.05.2015 21:55
quelle
1

Sie können nur nach dem Wert suchen, der dem Schlüssel entspricht, und dann prüfen, ob der Eingang dem Schlüssel entspricht.

%Vor%

Außerdem müssen Sie die letzte Zeile ändern, damit sie passt, sodass der Schlüssel anstelle des Werts gedruckt wird, wenn Sie die falsche Antwort erhalten.

%Vor%

Außerdem würde ich str.format für die Formatierung der Zeichenfolgen anstelle von% co_de empfehlen % Syntax.

Ihr vollständiger Code sollte so aussehen (nach dem Hinzufügen in der String-Formatierung)

%Vor%     
michaelpri 25.05.2015 21:58
quelle
0

Wenn alle Ihre Werte eindeutig sind, können Sie ein umgekehrtes Wörterbuch erstellen:

%Vor%

Ergebnis:

%Vor%

Jetzt können Sie die gleiche Logik wie zuvor verwenden.

    
Mike Müller 25.05.2015 21:59
quelle
0

Erstellen Sie das gegenteilige Wörterbuch:

%Vor%

Führen Sie stattdessen denselben Code für dieses Wörterbuch aus (mit PIX1 anstelle von PIX0 ).

Übrigens bin ich mir bei Python 3 nicht sicher, aber in Python 2 müssen Sie raw_input anstelle von input verwenden.

    
barak manos 25.05.2015 22:10
quelle

Tags und Links