if statement (Guess the number)

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
A.Elkhabbazi
User
Beiträge: 1
Registriert: Sonntag 6. Januar 2019, 22:30

import random

name = input("Hello what is your name?")
number = random.randint(1, 100)
print("Hi " + name + ", I'm thinking of a random number between 1 and 100.")
guessesTaken = 0

while guessesTaken < 10:
guess = input("Enter a guess: ")
guess = int(guess)
guessesTaken = guessesTaken + 1
if guess <= number - 1:
print("That was too low.")
elif guess >= number + 1:
print("That was too high!")
else:
break

if guess == number + 3:
print("almost")

if guess == number - 3:
print("almost")




if guess == number:
print(" Winner winner, chicken Dinner! Congrats " + name + " you guessed the correct number")
else:
print("You lose, too bad. Better luck next time. The right number was", number)




mein Problem ist, dass ich ein if statement mit almost gemacht habe sodass wenn die Zahl + 3 ist "almost" geprinted wird. Doch es wird dann "almost" und "too high" oder "too low" geprinted.
Wie ich kann das so machen, dass wenn die zu Zahl + 3 ist nur "almost" geprinted wird ??
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Wenn du deinen Code in Code-Tags packst, bleiben auch die Einrückungen erhalten, was das Lesen sehr viel einfacher macht.
Die Tags werden automatisch eingefügt, wenn du den </>-Button über dem Eingabefeld drückst.

Du benutzt in deinem Code bereits "elif". Das von dir gewünschte Verhalten, lässt sich damit erreichen. Also erst auf "almost" prüfen und wenn da nicht stimmt sollen die anderen Bedingungen geprüft werden.

Man kann mit "or" auch Bedingungen verknüpfen. Das würde ich bei den beiden, die "almost" ausgeben tun.

https://docs.python.org/3/tutorial/cont ... statements
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@A.Elkhabbazi: statt Strings mit + zusammenzustückeln, nimmt man Stringformatierung. Startt `guess <= number - 1` wäre `guess < number` deutlich lesbarer.
Statt der while-Schleife benutze eine for-Schleife und ein else-Block zur Schleife würde ein erneutes Prüfen überflüssig machen.
Antworten