Seite 3 von 3

Re: Phyton run funktioniert nur nach debuggen

Verfasst: Sonntag 30. Juni 2024, 12:06
von Hans888
@Sirius3
Oh das war mir nicht benwusst mit den Fromat strings, bin noch blutiger Anfänger.
Wenn ich das mit den Format strings machen muss ich da immer vorne dran das kleine f schreiben?

Das mit der while-True-Schleife und der Schleife für das Programmende war ein guter Hinweis, dankeschön.
Nur wenn ich das jetzt so mache und zweimal nicht N oder J eingebe dann starte das Programm trotzdem. o-O

Code: Alles auswählen

import random

while True:
    LOWER_BOUND = 0
    UPPER_BOUND = 100

    secret_Number = random.randint(LOWER_BOUND, UPPER_BOUND)

    print(secret_Number)

    print()
    print("Glückspiel Zahlen raten")
    print()
    print(f"Es wurde soeben eine Zufallszahl zwischen {LOWER_BOUND} und {UPPER_BOUND} generiert.")
    print("Deine Aufgabe ist es, zu erraten welche Zahl es ist.")
    print("Viel Erfolg!")
    print()

    count = 1

    while True:
        guess = int(input(f"Wähle eine Ganzzahl zwischen {LOWER_BOUND} und {UPPER_BOUND}: "))

        if guess == secret_Number:
            print("Yeahhh, das ist korrekt.")
            break
        elif guess < secret_Number:
            print(" Die gesuchte Zahl ist größer als deine geratene Zahl!")
        else:
            print("Die gesucht Zahl ist kleiner als deine geratene Zahl!")
        count = count +1

    print(f"Du hast {count} Versuche benötigt um die korrekte Zahl zu erraten!")
    print()

    c= input("Wollen Sie das Programm beenden? (J/N): ")
    if c == "J":
        break
    elif c == "N":
        print()
    elif c != "J" or "N":
        print("Da ist eine Falsche Eingabe!")
        c= input("Wollen Sie das Programm beenden? (J/N): ")

Re: Phyton run funktioniert nur nach debuggen

Verfasst: Sonntag 30. Juni 2024, 12:28
von Sirius3
Wenn man etwas öfter machen möchte, dann braucht man eine Schleife.
`c != "J" or "N"` ist nicht das, was Du denkst, das ist ein (c != "J") or ("N"), wobei ersters in Deinem Fall zu True ausgewertet wird, zweiteres immer wie True behandelt wird. Also steht da effektiv `True or True`, man sollte hier auch sonst statt elif else benutzen.
Aber wie schon geschrieben, hier fehlt eine Schleife.

Re: Phyton run funktioniert nur nach debuggen

Verfasst: Sonntag 30. Juni 2024, 13:05
von Hans888
Oh stimmt die Schleife:
So sollte es funktionieren .

Code: Alles auswählen

    c= input("Wollen Sie das Programm beenden? (J/N): ")
    if c == "J":
        break
    
    while True:
        if c == "N":
            print()
            break
        else:
            print("Da ist eine Falsche Eingabe!")
            c= input("Wollen Sie das Programm beenden? (J/N): ")

Re: Phyton run funktioniert nur nach debuggen

Verfasst: Sonntag 30. Juni 2024, 16:05
von Hans888
Update so solle es funktionieren

Code: Alles auswählen

    c= input("Wollen Sie das Programm beenden? (J/N): ")
    
    while True:
        if c == "J":
            break
        elif c == "N":
            print()
            break
        else:
            c != "N"
            print("Da ist eine Falsche Eingabe!")
            c= input("Wollen Sie das Programm beenden? (J/N): ")
    if c == "J":    
        break

Re: Phyton run funktioniert nur nach debuggen

Verfasst: Sonntag 30. Juni 2024, 16:22
von snafu
Warum ziehst du den Input-Teil nicht direkt hinter das while? Auch wird bei der Behandlung der höherliegende Code nicht erfahren, was nun gewählt wurde. Außer du löst das innerhalb einer großen Funktion, wo auf den Wert von "c" weiterhin zugegriffen werden kann.

Re: Phyton run funktioniert nur nach debuggen

Verfasst: Sonntag 30. Juni 2024, 16:34
von Hans888
ok also wäre das ganz so jetzt richitg?
Um meine erste While -True-Schleife zu stoppen mus sich das if == "J": break nochmal eingeben?
gibts da eine elegantere Lösung?

Code: Alles auswählen


import random

while True:
    LOWER_BOUND = 0
    UPPER_BOUND = 100

    secret_Number = random.randint(LOWER_BOUND, UPPER_BOUND)

    print(secret_Number)

    print()
    print("Glückspiel Zahlen raten")
    print()
    print(f"Es wurde soeben eine Zufallszahl zwischen {LOWER_BOUND} und {UPPER_BOUND} generiert.")
    print("Deine Aufgabe ist es, zu erraten welche Zahl es ist.")
    print("Viel Erfolg!")
    print()

    count = 1

    while True:
        guess = int(input(f"Wähle eine Ganzzahl zwischen {LOWER_BOUND} und {UPPER_BOUND}: "))

        if guess == secret_Number:
            print("Yeahhh, das ist korrekt.")
            break
        elif guess < secret_Number:
            print(" Die gesuchte Zahl ist größer als deine geratene Zahl!")
        else:
            print("Die gesucht Zahl ist kleiner als deine geratene Zahl!")
        count = count +1

    print(f"Du hast {count} Versuche benötigt um die korrekte Zahl zu erraten!")
    print()
    

    
    while True:
        c = input("Wollen Sie das Programm beenden? (J/N): ")
        if c in ["J", "N"]:
            break
        print("Da ist eine falsche Eingabe!")
    if c == "J":    
        break
    

Re: Phyton run funktioniert nur nach debuggen

Verfasst: Sonntag 30. Juni 2024, 16:48
von snafu
Kann man so machen. Wenn man etwas geübter ist, würde man Funktionen für die jeweiligen Teilaufgaben erstellen und diese entsprechend anwenden.

Re: Phyton run funktioniert nur nach debuggen

Verfasst: Sonntag 30. Juni 2024, 17:34
von __blackjack__
Alleine eine Funktion für das Hauptprogramm würde schon das mit dem doppelten ``break`` unnötig machen, weil man diese Funktion dann mit ``return`` verlassen könnte, wo im Moment nur die innere Schleife mit ``break`` verlassen wird.

Re: Phyton run funktioniert nur nach debuggen

Verfasst: Montag 1. Juli 2024, 10:55
von Kebap
Hans888 hat geschrieben: Sonntag 30. Juni 2024, 16:34 gibts da eine elegantere Lösung?
Ja, bald lernst du Funktionen. Die machen solche Sachen einfacher! :mrgreen:

Re: Phyton run funktioniert nur nach debuggen

Verfasst: Dienstag 2. Juli 2024, 19:13
von Hans888
Ich hoffe es. Danke für eure Hilfe und Erklärungen.