Seite 1 von 1

Ratespiel / Intervall festlegen

Verfasst: Freitag 4. Mai 2018, 13:16
von StareDog

Code: Alles auswählen

import random

Zufallszahl = random.randint (0,10)

Tipp = int(input ("Tipp einegeben:"))

while Tipp != Zufallszahl:
    if Tipp < Zufallszahl:
        print("Tipp < Zufallszahl")
    else:
        print ("Tipp > Zufallszahl")

    Tipp = int (input ("Tipp eingeben"))
else:
    print ("Du hast richtig geraten")
hallo. hab hier für die uni ein miniprogramm geschrieben.

"Schreiben Sie ein Programm, das eine ganze Zufallszahl zwischen 0 und 10 erstellt und solange Benutzereingaben empfängt, bis die richtige Zahl erraten wurde. Geben Sie dabei in jedem Schritt an, ob die gesuchte Zahl größer oder kleiner als die vom Benutzer geratene Zahl ist. Geben Sie im Erfolgsfall eine positive Rückmeldung."

Das Programm funktioiniert, allerdings will will ich noch, dass der Tipp nur im Intervall von 0 bis 10 eingegeben werden kann.
ich habs mit Tipp = int(input (0,10) ("Tipp einegeben:")).

Wie lege ich das Eingabeintervall für Tipp fest?

vielen dank!

Re: Ratespiel / Intervall festlegen

Verfasst: Freitag 4. Mai 2018, 13:33
von Sirius3
@StareDog: gewöhn Dir gleich eine saubere Schreibweise an, vor der Klammer eines Funktionsaufrufst gehört kein Leerzeichen. Variablen werden generell komplett klein geschrieben.

Eine while-Schleife mit else-Block, aber ohne `break` ist sinnlos. So einen else-Block sollte man nur ganz selten einsetzen, weil es das Lesen kompliziert macht. Code-Verdopplungen sind zu vermeiden. Statt zweimal int, um einen guten Startwert für die while-Schleife zu bekommen, ist es klarer, eine Endlosschleife (while True:) zu schreiben, die man mit break verläßt:

Code: Alles auswählen

import random

zufallszahl = random.randint(0,10)

while True:
    tipp = int(input("Tipp einegeben:"))
    if tipp == zufallszahl:
        break
    elif tipp < zufallszahl:
        print("Tipp < Zufallszahl")
    else:
        print("Tipp > Zufallszahl")
print("Du hast richtig geraten")
Was soll denn passieren, wenn der Nutzer keine Zahl zwischen 0 und 10 eingibt? Da da jeder was anderes will, gibt es nichts fertiges und man schreibt es sich selbst.

Re: Ratespiel / Intervall festlegen

Verfasst: Freitag 4. Mai 2018, 14:10
von StareDog
Danke für die Antwort.

Kannst du mir erklären wie break generell genutzt wird? er springt dann zu print?

zu dem intervall. ich wollte irgendwie, dass er vielleicht die die Nachricht "Bitte eine Zahl von 0 bis 10 eingeben" ausgibt und der Benutzer nochmal den tipp eingeben muss.

Re: Ratespiel / Intervall festlegen

Verfasst: Freitag 4. Mai 2018, 18:26
von henridoh
StareDog hat geschrieben:Kannst du mir erklären wie break generell genutzt wird? er springt dann zu print?
Der break befehl stoppt die Schleife oder Funktion, in der er ausgefürt wird.

Re: Ratespiel / Intervall festlegen

Verfasst: Freitag 4. Mai 2018, 18:28
von pixewakb
break bricht die Schleife komplett ab, d. h. du brichst damit die Ausführung der while-Schleife ab.

Es gibt noch continue, das bricht nur den aktuellen Schleifendurchgang ab.

Hilft Dir der nachfolgende Quellcode zum Verständnis?

Code: Alles auswählen

print("Veranschaulichung von break...\n")

x = 0
while x < 12:
    
    x += 1
    
    print("x = {}".format(x))
    
    if x == 5:
        break

print("Wenn x den Wert angenommen hat, wird die obige Schleife abgebrochen.")


print("\nJetzt ein Beispiel für continue...\n")

x = 0
while x < 12:

    x += 1

    print("x = {} -- vor der if-Abfrage und der continue-Anweisung".format(x))

    if x % 2 == 0:   # True für x = 2, 4, 6...
        continue

    print("x = {} -- Quellcode nach der continue-Anweisung...".format(x))

Re: Ratespiel / Intervall festlegen

Verfasst: Freitag 4. Mai 2018, 18:30
von henridoh
StareDog hat geschrieben:zu dem intervall. ich wollte irgendwie, dass er vielleicht die die Nachricht "Bitte eine Zahl von 0 bis 10 eingeben" ausgibt und der Benutzer nochmal den tipp eingeben muss.
Schreib doch einfach noch:

Code: Alles auswählen

    import random
     
    zufallszahl = random.randint(0,10)
     
    while True:
        tipp = int(input("Tipp einegeben:"))
        if tipp == zufallszahl:
            break
        elif tipp < zufallszahl:
            print("Tipp < Zufallszahl")
        elif tipp > 10:
        	print("Tipp muss zwischen 1 und 10 liegen")
        else:
            print("Tipp > Zufallszahl")
    print("Du hast richtig geraten")

Re: Ratespiel / Intervall festlegen

Verfasst: Freitag 4. Mai 2018, 18:35
von pixewakb
Unter Nutzung des Quellcodes von Sirius3, das könnte auch funktionieren:

Code: Alles auswählen

import random
 
zufallszahl = random.randint(0,10)


def eingabe():
    while True:
        try:
            tipp = int(input("\nTipp eingeben: "))
        except ValueError:
            print("Bitte geben Sie eine Zahl ein!")
            continue
        if tipp < 0 or tipp > 10:
            print("Bitte eine Zahl von 0 bis 10 eingeben!")
        else:
            return tipp


while True:

    tipp = eingabe()
    
    if tipp == zufallszahl:
        break
    elif tipp < zufallszahl:
        print("Tipp < Zufallszahl")
    else:
        print("Tipp > Zufallszahl")

print("Du hast richtig geraten")

Re: Ratespiel / Intervall festlegen

Verfasst: Sonntag 6. Mai 2018, 12:35
von StareDog
Danke. Das mit dem break und continue hab ich jetzt verstanden. Bin gespannt, ob das verständnis auch da ist, wenn ichs brauch :D

gute ideen zu dem tipp mit Tipp [0,10].

Die Aufgabe hab ich denke ich geschafft.