Hallo, ich möchte in Python zwei int Werte mit einer If Abfrage vergleichen. Die Abfrage funktioniert aber nicht. Kann mir da jemand bitte helfen?
import random
#Function User Input
def validate_numeric(value_string, numeric_type=int):
"""Validate a string as being a numeric type"""
try:
return numeric_type(value_string)
except ValueError:
raise
#User Input Loop
global user_in
while True:
user_in = input('Please enter a number: ')
try:
result = validate_numeric(user_in, int)
except ValueError:
print('Please try again:')
continue
else:
break
#end of this loop
#Random Number
global num
num = random.randrange(1, 2, 1)
print('Die zufällige Nummer ist:',(num))
#Check if input and number are the same
if user_in == num:
print('Super, du hast die Nummer gefunden')
else:
print('Schade, das war nicht die Nummer')
Der erste Wert soll durch eine Benutzereingabe und der zweite Wert durch einen Random Number Generator kommen.
Das soll ein kleines Spiel sein, indem der Benutzer eine Zahl erraten soll
6 Antworten
Das Problem ist, dass du nicht zwei Integer miteinander vergleichst sondern eine Integer und einen String, die beiden Variablen werden deshalb nie gleich sein. Du musst die Usereingabe erst zu einem Integer konvertieren, wenn du sie vergleichen willst, alternativ kannst du auch die Zufallszahl zu einem String konvertieren. Bei ersterer Lösung solltest du natürlich noch eine ungültige Eingabe abfangen...
Schau mal hier hin:
result = validate_numeric(user_in, int)
user_in ist ein Eingabestring, und result die daraus bestimmte Zahl.
Warum zum Henker verwendest Du später user_in, obwohl Du eine Zahl brauchst? Schreib einfach
if result == num:
dann passt's.
result ist übrigens ein ziemlich blöder Name für einen Eingabewert.
Also ich kann kein Python, aber allein schon vom Allgemeinen Verständnis sieht das nicht wirklich so aus, als ob das laufen kann. Und es wäre vermutlich besser, wenn du einen Screenshot von deinem Code machen würdest, weil so ist das so formatiert, dass es pratkisch nicht leserlich ist.
Ich kenne das Spiel, habe es mal in C programmiert.
Du vergleichst einen String (user_in) mit einem Integer (num), mal abgesehen von sonstigen Fehlern und falls die Einrückungen in deinem Code stimmen.
Du meinst die App generiert eine Ganzzahl und diese Zahl soll der User, durch Eingabe einer Zahl, erraten.
Stimmen beiden Werte überein, ist die Zahl geraten.
Dabei kann noch der Hinweis gegeben werden, ob die eingegebene Zahl größer oder kleiner ist, als die von der App generierten Zahl.