Zähler bei Ratespiel inkorrekt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
püthon
User
Beiträge: 5
Registriert: Samstag 29. September 2012, 15:16

Hallo,

ich bin noch ziemlicher Programmieranfänger und habe ein Ratespiel programmiert. Jedoch ist die Ausgabe der Anzahl der Versuche (count) nicht immer korrekt, meistens kleiner. Wenn mir bitte jemand auf die Sprünge helfen würde was da nicht stimmt.

Code: Alles auswählen

import random
zahl = random.randint(1, 100)
print"********************Ratespiel*******************"
print""
guess = input("Raten Sie eine Zahl zwischen 1 und 100: ")
count = 1
print""
while guess != zahl:
    if guess > zahl:
        guess = input("Die gesuchte Zahl ist kleiner: ")
    if guess < zahl:
        guess = input("Die gesuchte Zahl ist größer: ")
    count = count + 1
print "Glückwunsch!!! Sie haben die Zahl in", count, "Versuchen erraten."
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Der Programmablauf in der `while`-Schleife entspricht nicht dem, was du dir sehr wahrscheinlich vorstellst. Es wird nämlich bei jedem Durchlauf sowohl auf größer-als geprüft mit ggf folgender Abfrage einer neuen Eingabe, als auch anschließend - und zwar *immer* - auf kleiner-als mit ggf folgender Abfrage. Es kann also in bestimmten Konstellationen (denk mal nach, bei welchen) dazu kommen, dass innerhalb eines Schleifendurchlaufs zweimal nach einer Zahl gefragt, jedoch nur einmal der Counter erhöht wird.

Was du eigentlich willst, ist:

Code: Alles auswählen

if guess > zahl:
    [...]
else:
    if guess < zahl:
        [...]
Oder kürzer (und zu empfehlen):

Code: Alles auswählen

if guess > zahl:
    [...]
elif guess < zahl:
    [...]
Zuletzt geändert von snafu am Samstag 29. September 2012, 16:27, insgesamt 1-mal geändert.
püthon
User
Beiträge: 5
Registriert: Samstag 29. September 2012, 15:16

Jetzt ist der Groschen gefallen. Herzlichen Dank!
Antworten