Programmieren – die besten Beiträge

Wie starte ich die While Schleife in Python neu?

Hallo!

Ich programmiere aktuell einen "Vokabelabfrager". Dazu hätte ich eine Frage. Und zwar arbeite ich grafisch mit Tkinter. Doch ich bin gerade in einer While Schleife, in der alles funktioniert, aber dann will die While Schleife sich nicht mehr neustarten, denn sie hat schon erledigt was sie machen sollte, und will nicht weiter abfragen, weil sie dies schon gemacht hat.

Das ist ein Ausschit meines Codes:

weiter = False


def Prüfungs_Start():
    global weiter
    weiter = True
    while weiter == True:
        weiter = False
        Prüfungs_Start_Fenster = Tk()
        Prüfungs_Start_Fenster.title("Prüfung")
        Prüfungs_Start_Fenster.geometry("400x500")
        #Random Zeile finden
        Datei = open("Vokabeln.txt", "a")
        Datei = open("Vokabeln.txt", "r")
        Datei_Anzahl_Zeilen = 0
        for Zeile in Datei:
            Datei_Anzahl_Zeilen += 1
        Datei.seek(0)
        Randomzeile = randint(1, Datei_Anzahl_Zeilen)
        Zähler = 1
        for Zeilen_Inhalt in Datei:
            if Zähler == Randomzeile:
                Random_Zeilen_Inhalt = Zeilen_Inhalt
            Zähler += 1
        #2 Vokabeln, die in der ausgewählten Zeile stehen, in 2 Variablen speichern
        Ort = Random_Zeilen_Inhalt.find("'")
        TestVokabel1 = Random_Zeilen_Inhalt[0:Ort]
        TestVokabel2 = Random_Zeilen_Inhalt[Ort+1:-1]
        Label(Prüfungs_Start_Fenster, text = f"Ausgangs-Vokabel: {TestVokabel1}", font = "Arial_Black 20").place(x = 10, y = 10)
        Eingegebenes_Ergebnis = Entry(Prüfungs_Start_Fenster)
        Eingegebenes_Ergebnis.place(x = 10, y = 50)
        def Prüfung():
            if Eingegebenes_Ergebnis.get() == TestVokabel2:
                Label(Prüfungs_Start_Fenster, text = "Richtig!         ", font = "Arial 21", fg = "green").place(x = 10, y = 180)
            else:
                Label(Prüfungs_Start_Fenster, text = "Leider falsch", font = "Arial 21", fg = "red").place(x = 10, y = 180)


        Button(Prüfungs_Start_Fenster, text = "Fertig", command = Prüfung).place(x = 10, y = 100)
        def Weiter():
            global weiter
            weiter = True
            Prüfungs_Start_Fenster.destroy()
        Button(Prüfungs_Start_Fenster, text = "Weiter", command = Weiter).place(x = 10, y = 130)

Nun habe ich hinten diesen "Weiter" Button, der die Variable "weiter" wieder auf einen anderen Wert weisen soll, um die While Schleife wieder laufen zu lassen. Das möchte sie aber wohl nicht, denn sie hat ja schon abgefragt und da hat es nicht gestimmt.

Wenn ihr wisst, wie ich es schaffen kann, dass die While Schleife neu abfragt, bitte hilft mir,

euer Alex

programmieren, Programmiersprache, Python, Tkinter

Java - wievielter Tag im Jahr berechnen?

Hallo, ich habe folgende Aufgabenstellung: Schreiben Sie ein Programm, das für ein gegebenes Datum bestehend aus Tag, Monat und Jahr ausrechnet, um den wievielten Tag im Jahr es sich handelt. (Achtung: Schaltjahrproblematik nicht vergessen.)

Mein Code:

import java.util.Scanner;
public class TagImJahr
{
    public static void main(String[] args)
    {
        Scanner read = new Scanner(System.in);

        int tag, monat, jahr, anzahlTage, wievielterTag, monatTag;
        boolean Schaltjahr;

        System.out.println("Geben Sie einen Tag ein: ");
        tag = read.nextInt();

        System.out.println("Geben Sie einen Monat ein: ");
        monat = read.nextInt();

        System.out.println("Geben Sie ein Jahr ein: ");
        jahr = read.nextInt();

        Schaltjahr = (jahr%4 == 0) && (jahr%100 != 0) || (jahr%400 == 0);

        if(Schaltjahr && monat == 2)
        {
            anzahlTage = 366;                                       //Anzahl der Tage im Jahr
            monatTag = 29;                                          //Tage im Monat
        }
        else
        {
            anzahlTage = 365;                                       //Anzahl der Tage im Jahr
            monatTag = 31;                                          //Tage im Monat
        }

        int datum = anzahlTage + (monat * monatTag - monatTag) + tag;

        wievielterTag = datum - anzahlTage;

        System.out.println("Der " + tag + "." + monat + "." + jahr + " ist der " + wievielterTag + ". Tag im Jahr");
    }
}

Jedoch fehlt bei mir irgendwas, evtl. das manche Monate 31 und 30 Tage haben, wie baue ich dies jedoch am Besten ein? Bei ein paar Datumseingaben kommt das richtige Ergebnis, bei anderen weichen die Tage um paar Zahlen ab.

Kann mir bitte jemand weiterhelfen?

Studium, programmieren, Java

Meistgelesene Beiträge zum Thema Programmieren