@pleasehelp!:
noch ein paar Anmerkungen zum gezeigten Code.
Bezeichner für Variablen, Funktionen und Methoden werden in Python komplett_klein_mit_unterstrich geschrieben. Die Bezeichner selbst sollten möglichst aussagekräftig sein. `conn`, `richtigeangabe`, `s`, `WahlR` etc. laden zu munteren Ratespielen ein, auch eine Mixtur aus aus Deutsch und Englisch ist äußerst grässlich: `showSchueler`.
Der Code lässt sich etwas kompakter gestalten, lower() kann direkt an input() gehängt werden, das print() mit der Abfrage der richtigen Schülerangaben ist überflüssig und lässt sich ebenfalls mit input() verheiraten, bei der Abfrage der Schülernummer machst du das ja schon. Wenn `WahlR` zutrifft, wird die Funktion aufgerufen. Wenn nicht, passiert erstmal gar nichts. Kommt hier noch was? Sonst ist der else-Block nutzlos.
Du übergibst der Funktion `richtigeangabe` den Parameter `s`, welcher aber erst in der Funktion ermittelt wird. Entweder die Schülernummer steht schon fest und wird übergeben, dann wird sie knallhart überschrieben, oder aber du lässt `s` als Übergabeargument weg wenn das nur in der Funktion geschehen soll.
Außerdem solltest du generell noch fehlerhafte Benutzereingaben abfangen, das passiert im genannten Code gar nicht und es gibt viele Möglichkeiten das Programm so zum Absturz zu bringen.
Idee:
Code: Alles auswählen
def pruefe_schueler_daten(conn, funktion):
while True:
schueler_id = input("Geben Sie die Schülernummer ein: ")
zeige_schueler_daten(conn, schueler_id)
schueler_daten_korret = input(
"Sind das die richtigen Schülerangaben? Geben Sie Ja oder Nein ein: "
).lower()
if schueler_daten_korret == "ja":
# funktion
break
return schueler_id