Ratespiel / Intervall festlegen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
StareDog
User
Beiträge: 50
Registriert: Donnerstag 19. April 2018, 09:59

Freitag 4. Mai 2018, 13:16

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!
Sirius3
User
Beiträge: 7926
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 4. Mai 2018, 13:33

@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.
StareDog
User
Beiträge: 50
Registriert: Donnerstag 19. April 2018, 09:59

Freitag 4. Mai 2018, 14:10

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.
henridoh
User
Beiträge: 12
Registriert: Mittwoch 4. April 2018, 21:35

Freitag 4. Mai 2018, 18:26

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.
Benutzeravatar
pixewakb
User
Beiträge: 981
Registriert: Sonntag 24. April 2011, 19:43

Freitag 4. Mai 2018, 18:28

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))
henridoh
User
Beiträge: 12
Registriert: Mittwoch 4. April 2018, 21:35

Freitag 4. Mai 2018, 18:30

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")
Benutzeravatar
pixewakb
User
Beiträge: 981
Registriert: Sonntag 24. April 2011, 19:43

Freitag 4. Mai 2018, 18:35

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")
StareDog
User
Beiträge: 50
Registriert: Donnerstag 19. April 2018, 09:59

Sonntag 6. Mai 2018, 12:35

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.
Antworten