Python:mehrere richtige Antworten in einem Python Quiz?

3 Antworten

Der Nutzer muss mehrere Eingaben tätigen können (das Ende könnte er mit einem Wort wie ende kennzeichnen) oder seine Antworten mit einem definierten Trennzeichen (z.B. einem Semikolon) trennen.

Die Eingaben werden in einer Liste gespeichert. Bei der obigen Trenner-Operation müsstest du den String halt anhand des Trenners in eine Liste aufsplitten. Es gibt bereits implementierte Funktionen dafür.

Für den Vergleich sollten die gültigen Lösungen ebenso in einer Liste vorliegen.

Dann kannst du durch die Liste der gegebenen Antworten durchlaufen und je Antwort schauen, ob diese wiederum in der Lösungsliste vorkommt.

regex9  04.04.2020, 18:27

PS.: Ich habe die Frage falsch verstanden/gelesen. Ich dachte, der Nutzer dürfe mehrere Antworten angeben, die dann auch alle richtig sein müssten.

0

Die Frage ist bisschen Lasch gestellt. Ich weiß zwar nicht, was genau du möchtest, aber ich versuch mal mein bestes. Hier bekommst du einen Beispiel Code und sagst, ob es das ist, was du brauchst:

#Das ".lower()" in den if-Abfragen bedeutet, dass Groß und Kleinschreibung egal ist.

print("Willkommen zum Quiz")


richtig = 0
falsch = 0





print("Was ist die Bundeshauptstadt?")
print(""" 
1. Hamburg
2. Berlin
3. Bremen
4. Köln
5. Bonn
""")


richtige_antwort = 1
nutzer_antwort = input("Antwort: ")

if str(richtige_antwort).lower() == str(nutzer_antwort):
	print("Richtig")
	richtig = richtig + 1
else:
	print("Falsch, richtig währe" + str(richtige_antwort))
	falsch = falsch + 1







print("Wie viele Bundesländer gibt es?")
print("Bitte gebe eine Zahl ein.")


richtige_antwort = 16
nutzer_antwort = input("Antwort: ")


if str(richtige_antwort).lower() == str(nutzer_antwort):
	print("Richtig")
	richtig = richtig + 1
else:
	print("Falsch, richtig währe: " + str(richtige_antwort))
	falsch = falsch + 1







print("Was ist dar größte Staat der Welt?")
print("Bitte gebe den Namen des Staates ein")


richtige_antwort = "Russland"
nutzer_antwort = input("Antwort: ")


if str(richtige_antwort).lower() == str(nutzer_antwort):
	print("Richtig")
	richtig = richtig + 1
else:
	print("Falsch, richtig währe: " + str(richtige_antwort))
	falsch = falsch + 1




print("Richtige Antworten: " + str(richtig))
print("Falsche Antworten: " + str(falsch))
print("Punkte: " + str(richtig - falsch)) 

Ich habe den Code so geschrieben, dass es für dich einfach ist ihn zu verwenden und nachzuvollziehen. Ich habe den Code jetzt nicht ausführlich getestet, weil ich jetzt weg muss.

Ich hoffe, dass ich dir helfen konnte!

Zum Beispiel so:

loesungen = [“antwort 1”, “antwort 2”, “antwort 3”]
if antwort in loesungen:
      print(“richtig”)
else:
      print(“falsch”) 
Woher ich das weiß:Studium / Ausbildung – Student der Informatik an der HU Berlin
BwIok 
Fragesteller
 04.04.2020, 18:08

ok Danke

0
BwIok 
Fragesteller
 04.04.2020, 18:14

aber da steht dann invalid charcter in identifier. weißt jemand wie man das fixed ?

0
Lolwis111  04.04.2020, 18:16
@BwIok

Wo steht das? Hast du den Code kopiert? Ich denke mal, dass die Anführungszeichen ein Problem sind. Tippe das lieber mal ab (ganz normale Anführungszeichen verwenden, Shift+2, ich denke, dass liegt an dem komischen Codeeditor von gutefrage)

0
BwIok 
Fragesteller
 04.04.2020, 18:19
@Lolwis111

es gibt zwar jetzt keine Fehlermeldung aber es ist keine antwort mehr richtig

0
regex9  04.04.2020, 18:23
@Lolwis111

Nein, der Editor von GF ist nicht an den Anführungszeichen schuld. Vermutlich hast du den Text von irgendwoher kopiert, wo diese Zeichen so verwendet wurden.

0
Lolwis111  04.04.2020, 18:26
@regex9

Ich habe es ehrlich gesagt am Handy getippt. Die Anführungszeichen sind jedenfalls ein Problem.

0
BwIok 
Fragesteller
 04.04.2020, 18:28
@Lolwis111

aber es funktioniert auch nicht so wirklich mit den normalen Anführungszeichen.

0
BwIok 
Fragesteller
 04.04.2020, 18:32
@BwIok

oder liegt es villeicht an der eckigen Klammer ?

0