Hilfe bei Informatik Zahlenraten?
ich bekomme die ganze Zeit Syntax Fehler und Name errors ich brauche dringend Hilfe
Programmieraufgabe: Zahlenraten
Der Computer wählt eine (ganzzahlige) Zufallszahl von 1 bis 100.
Der Benutzer rät eine Zahl, der Computer meldet zurück, ob seine Zahl größer oder kleiner ist oder ob der Benutzer die Zahl getroffen hat.
Dies wiederholt sich so lange, bis die Zahl getroffen wurde.
Dabei zählt der Computer die Versuche mit und gibt das Ergebnis am Ende aus.
Alternative: Der Benutzer hat maximal fünf Versuche zu Verfügung, sonst hat er verloren.
4 Antworten
Man sieht nicht was bzw. ob etwas in der ersten Zeile bei dir steht.
Jedenfalls sieht es danach aus, als ob du das random-Modul nicht geladen hast. Dementsprechend kann Python mit dem „random.[irgendwas]“ nichts anfangen. Ergänze zu Beginn deines Codes
import random
um das random-Modul zu laden.
===============
Bei „if versuch == 1 - 100“ solltest du bedenken, dass das im Prinzip „if versuch == -99“ ist. Du möchtest wohl nicht vergleichen, ob die Zahl gleich -99 ist, sondern ob die im Bereich von 1 bis 100 liegt. Da bräuchtest du dann „if 1 <= versuch <= 100“.
Und die weiteren ifs werden so immer erfüllt sein, wenn die erste if-Bedingung erfüllt ist. Dementsprechend sind die anderen ifs an der entsprechenden Stelle nutzlos. Ich denke auch, dass du eher die Vergleichszeichen andersrum haben möchtest, also beispielsweise „if versuch > 100“ statt „if versuch < 100“. Dann solltest du nicht einrücken bzw. evtl. sogar eher ein else-if verwenden, damit die hier Sinn ergeben.
Bzw. ist mir gerade aufgefallen, dass man stattdessen das erste if einrücken sollte. So wie es gerade dasteht, wird einfach unendlich oft nach einer Eingabe gefragt. Das erste if befindet sich außerhalb hinter der Schleife.
===============
Des Weiteren hast du noch nicht implementiert, dass die Anzahl der Versuche mitgezählt wird bzw. es alternativ maximal 5 Rateversuche sein sollen. Auch dass der Nutzer nach einem Erfolg nicht nochmal eine Zahl zum Raten eingeben muss. Und du sollst auch ausgeben, ob der Rateversuch größer oder kleiner ist, als die gewählte Ratezahl.
Die Lösung aus meinem vorigen Kommentar ist für die Alternative mit maximal 5 Versuchen. Hier noch ein Lösungsvorschlag ohne diese Begrenzung:
from random import randint
ratezahl = randint(1, 100)
print("Ich habe mir eine ganze Zahl im Bereich von 1 bis 100 ausgedacht.")
print("Versuche diese Zahl zu erraten.")
print("Durch Eingabe von 0 kannst du das Spiel abbrechen.")
anzahlVersuche = 0
while True:
anzahlVersuche += 1
try:
versuch = int(input(f"\n{anzahlVersuche}. Versuch: "))
except ValueError:
print("Eingabe ungültig. Gib eine ganze Zahl ein!")
continue
if versuch == 0:
print(f"Du hast das Spiel nach {anzahlVersuche} Versuchen abgebrochen.")
break
elif versuch < 1 or versuch > 100:
print("Die eingegebene Zahl liegt nicht im Bereich von 1 bis 100.")
elif versuch == ratezahl:
print(f"Glückwunsch! Du hast die Zahl {ratezahl} nach {anzahlVersuche} Versuchen richtig erraten!")
erraten = True
break
elif versuch < ratezahl:
print("Leider falsch. Die eingegebene Zahl ist zu klein.")
elif versuch > ratezahl:
print("Leider falsch. Die eingegebene Zahl ist zu groß.")
else:
raise RuntimeError("Beim Vergleich der Zahlen ist ein unerwarteter Fehler aufgetreten.")
dir fehlt der import für das random-Modul :-)
import random
ratezahl = random.randint(1,100)
versuche = 0
print("Ich hab mir eine Zahl von 1-100 ausgedacht.")
while True:
versuch = int(input("Rate meine Zahl"))
versuche = versuche + 1
if versuch == ratezahl:
print("Richtig erraten! Du hast { versuche } gebraucht")
break;
if versuch < ratezahl:
print("deine Zahl ist zu klein")
if versuch > ratezahl:
print("deine Zahl ist zu groß")
Du musst zuerst "random" importieren, also:
import random
Das kommt in die erste Zeile, darunter dein restlicher Code
Und schreib in Zeile 8 folgendes rein:
if versuch == ratezahl:
A) Du musst random erst importieren. Das ist der Syntaxfehlee.
B) Keine Ahnung was dein Vergleich == 1 - 100 soll, aber du musst auf die Zufallszahl prüfen
C) Deine Weiteren Überprüfungen ergeben auch keinen Sinn. Du sollst ausgeben, ob die Eingegebene Zahl kleiner oder größer der Zufallszahl ist, damit der Nutzer den Bereich eingrenzen kann
Ach, und dein erstes if in Zeile 8 ist falsch eingerückt
Ich habe gerade mal überlegt, wie ich das selbst programmieren würde. Hier meine Lösung zum Vergleich:
Du solltest natürlich bedenken, dass das nicht DIE richtige Lösung ist. Das Spiel kann man auf unterschiedliche Weise programmieren. Und außerdem geht es ja auch eher darum, dass die Aufgabe dazu da ist, dass du Programmieren lernst bzw. übst. Daher ist es evtl. sinnvoller, wenn du dich an deinem Programmier-Versuch orientierst und versucht diesen zu verbessern, statt zu viel von mir zu übernehmen. Aber evtl. bekommst du aufgrund meiner Lösung evtl. Ideen/Ansätze.