2016-07-09 4 views
1

Für den Monat Februar versuche ich es so zu machen, dass es 3 richtige Antworten für die Anzahl der Tage im Monat hat 28,29 29 28 aber es scheint nicht zu funktionieren, wenn ich versuchenGeben Sie ein Quiz 2 richtige Antworten

user = int(input("")) 

if month == "January": 
    answer = 31 
elif month == "Feburary": 
    answer = 28 

zu

user = int(input("")) 

if month == "January": 
    answer = 31 
elif month == "Feburary (use comma to seperate two numbers)": 
    answer = 28,29 or 28 or 29 

mir, dass es klar zu ändern, um ein Problem bei der Verwendung ganzer Zahl im Eingang ist, aber ich bin nicht sicher, wie das mit dem Komma zu beheben, und es läßt mich nicht Platz zwischen 28 und 29.

Dies ist der Rest des Codes:

import random 
import shelve 
from tkinter import * 
result = [] 
highscore = [] 

root = Tk() 

highscore = 0 
correct = 0 
d = shelve.open('highscore.txt') 
d['highscore'] = highscore   
d.close() 

name = input("What is your name: ") 
print ("Hello there",name,"!") 
for count in range(12): 
    month = random.choice(["January", "February", "March", "April", "May",  "June", "July", "August", "September", "October", "November", "December"]) 
while month in result: 
    month = random.choice(["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]) 
result.append(month) 
print ("How many Days in?", month) 
user = int(input("")) 

if month == "January": 
    answer = 31 
elif month == "February": 
    answer = 28,29 or 29 or 28 
elif month == "March": 
    answer = 31 
elif month == "April": 
    answer = 30 
elif month == "May": 
    answer = 31 
elif month == "June": 
    answer = 30 
elif month == "July": 
    answer = 31 
elif month == "August": 
    answer = 31 
elif month == "September": 
    answer = 30 
elif month == "October": 
    answer = 31 
elif month == "November": 
    answer = 30 
elif month == "December": 
    answer = 31 

if user == answer: 
    print("Correct!") 
    correct = correct + 1 
else: 
    print ("Wrong, the correct answer was", answer) 

if correct > highscore: 
    highscore = correct 
    print (name,", You Beat The Highscore and got",highscore,"Out Of 12") 
    photo = PhotoImage(file='/Users/HoneyCentaur/Desktop/Approval.gif') 
    photo_label = Label(image=photo) 
    photo_label.grid()    
    photo_label.image = photo  

text = Label(text=" ") 
text.grid()  

root.deiconify() 
root.mainloop() 
else: 
    print (name, ", You Got", correct, "Out Of 12") 

d = shelve.open('highscore.txt') 
d['highscore'] = highscore   
d.close() 

Antwort

0

Sie wollen wahrscheinlich ein list zu überprüfen, um zu verwenden, wenn die user Antwort in der Liste der möglichen Antworten für die Anzahl der Tage in einem Monat ist. Sie können dann das Schlüsselwort in in python check verwenden, wenn user in der Liste der möglichen Antworten steht.

Der Code wäre ein bisschen wie folgt aussehen:

if month == "Janurary": 
    answer=[31] 
elif month == "Feburary": 
    answer=[28,29] 

if user in answer: 
    print("Correct!") 
    correct = correct + 1 

EDIT # 1

Beachten Sie viele andere Möglichkeiten für den Gang auf diesem gibt es. Ein einzelnes Element in einer Liste zu haben, vereitelt den Zweck und behindert die Verständlichkeit.

Eine bessere Option könnte sein, nur die Benutzer 28-29 oder umge ein kehrt beantworten zu werfen, wenn Sie verwenden es nur Punkte zu zählen:

if month == "Janurary": 
    answer=31 
elif month == "Feburary": 
    if(user == 28): 
    user = 29 
    answer=29 

if user in answer: 
    print("Correct!") 
    correct = correct + 1 
0

ich nur glauben „oder“ für boolean oder Vergleichsoperationen verwendet. heißen

if month == "Janurary" or month == "Feburary": do_something

wenn das Quiz für die möglichen „letzten Tage“ von einem Monat suchen, ich gehe davon aus, die Funktion würde eine Liste von Optionen möchte.

if month == "Janurary": answer=[31] elif month == "Feburary": answer=[28,29]

Verwandte Themen