Ich versuche, ein History-Quiz von verschiedenen Schwierigkeiten mit Funktionen zu programmieren, aber habe Probleme mit "globalen Namen" bekommen. Ich habe versucht, dies zu korrigieren, aber nichts scheint zu funktionieren.Probleme mit globalen Variablennamen und verschiedenen Funktionen (mit Python)
Der Snippet-Code ist:
#Checking Answers
def checkEasyHistoryQuestions():
score = 0
if hisAnswer1E == 'B' or hisAnswer1E == 'b':
score = score + 1
print "Correct!"
else:
print "Incorrect!"
if hisAnswer2E == 'A' or hisAnswer2E == 'a':
score = score + 1
print "Correct!"
else:
print "Incorrect!"
if hisAnswer3E == 'B' or hisAnswer3E == 'b':
score = score + 1
print "Correct!"
else:
print "Incorrect!"
print score
print "\n"
#History - Easy - QUESTIONS + INPUT
def easyHistoryQuestions():
print "\n"
print "1. What date did World War II start?"
print "Is it:", "\n", "A: 20th October 1939", "\n", "B: 1st September 1939"
hisAnswer1E = raw_input("Enter your choice: ")
print "\n"
print "2. When did the Battle of Britain take place?"
print "Is it: ", "\n", "A: 10th July 1940 – 31st October 1940", "\n", "B: 3rd July 1940- 2nd August 1940"
hisAnswer2E = raw_input("Enter your choice: ")
print "\n"
print "3. Who succeeded Elizabeth I on the English throne?"
print "Is it: ", "\n", "A. Henry VIII", "\n", "B. James VI"
hisAnswer3E = raw_input("Enter your choice: ")
print "\n"
checkEasyHistoryQuestions()
Der Fehler Ich erhalte ist:
if hisAnswer1E == 'B' or hisAnswer1E == 'b':
NameError: global name 'hisAnswer1E' is not defined
ich versucht habe hisAnswer1E als globalen Variable in der Funktion als gut als außerhalb zu erklären.
Zum Beispiel:
print "\n"
print "1. What date did World War II start?"
print "Is it:", "\n", "A: 20th October 1939", "\n", "B: 1st September 1939"
global hisAnswer1E
hisAnswer1E = raw_input("Enter your choice: ")
print "\n"
Und auch:
global hisAnswer1E
#Checking Answers
def checkEasyHistoryQuestions():
score = 0
if hisAnswer1E == 'B' or hisAnswer1E == 'b':
score = score + 1
print "Correct!"
else:
print "Incorrect!"
Nichts scheint zu funktionieren und ich halte nur den gleichen Fehler. Irgendwelche Ideen warum?
Warum sie nicht als Parameter übergeben ? –
Es gibt einige Probleme mit Ihrem Programm: Sie starten nie die Methode easyHistoryQuestions. Innerhalb des Körpers dieser Funktion werden Sie den Benutzer trotzdem nach Eingabe fragen, aber Sie überschreiben diese Antwort jedes Mal. Dann wird die andere Funktion niemals auf diese Werte zugreifen, da sie nicht global sind.Ich würde im Moment vorschlagen, dies ohne irgendeine Funktion zu tun und dann zu versuchen, mit Funktionen zu refaktorieren, sobald Sie den Dreh raus haben. – Axnyff
@StephenRauch Ich dachte, Sie könnten nur 2 Parameter übergeben? – qwe