Ich habe mich wie empfohlen von Anfang an durch das Tutorial gearbeitet.
Zum Thema Variablen in einer Funktion bin ich auf ein Problem gestoßen wo ich die Quelle nicht verstehe oder erkennen.
Folgendes Szenario.
Ich habe Versucht eine Operation in eine Funktion auszulagern um den Quellcode übersichtlicher zu gestalten. Wenn ich die Operation direkt in den Code schreibe und diesen nicht auslagr, funktioniert auch alles. Sobald ich die Funktion verwende, werden Teile der Operation nicht oder fehlerhaft durchgeführt.
Beispiel am Code:
Code: Alles auswählen
#Funktionen
#--------------------------------------------------------------
def answer_check(answer, points, rights, wrongs):
if answer == solution:
print("Correct.")
points=points+3
rights=rights+1
else:
print("Wrong.")
points=points-1
wrongs=wrongs+1
return points, rights, wrongs
#Programm
#--------------------------------------------------------------
points=0
rights=0
wrongs=0
for question, answer in zip((questions), (answers)):
print(question)
answer=" "
while answer not in ("A", "B", "C"):
answer=input("Your Answer (A, B, or C):")
answer_check(answer, points, rights, wrongs)
print("Points: {}\nCorrect answers: {}\nWrong answers: {}".format(points, rights, wrongs)
Was mir noch beim Testen aufgefallen ist:
- Wenn ich die Ausgabe in der Funktion hinterlege, werden die korrekt berechneten Werte ausgegeben.
- Allerdings scheint die Funktion immer wieder mit "0"-Werten in den Variablen anzufangen.
- Beim nächsten Schleifendurchlauf wäre als bei der Berechnung "points", "rights" und "wrongs" wieder bei "0" (Abhängig davon was ich bei der
Variablendeklaration angebe.).
Daraus erschliesst sich mir, das lediglich die Rückgabe der Variablen nicht funktioniert. Somit liest die Funktion immer wieder "0" ein, da die Variablen nicht aktualisiert werden und gibt immer "0" aus, da die Rückgabe nicht funktioniert.
Vielen Dank für eure Zeit
Gruß
Flo