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.
Hey Leute,
Ich habe eine kleines Spiel geschrieben. In dem Spiel hat man 10 Versuche eine Zahl zwischen 1 und 100 zu erraten. Meine Frage: Wenn man die Zahl schon nach dem vzB vierten Versuch erraten hat soll das Programm beendet werden. Gibt es dafür einen Befehl?
#!/usr/bin/python3
import random
zahl = random.randrange(1, 100+1)
print("Sie haben 10 Versuche eine Zahl zwischen 0 und 100 zu finden!\n")
ver1 = int(input("Ihr erster Versuch:\n"))
# ################################################### Versuch 1
if ver1 == zahl :
print("Sie haben die Zahl erraten!")
elif ver1 < zahl:
print("Die Zahl ist groesser. Noch ein Versuch\n")
elif ver1 > zahl :
print("Die Zahl ist kleiner. Noch ein Versuch\n")
# #################################################### Versuch 2
ver2 = int(input("Ihr zweiter Versuch:\n"))
if ver2 == zahl :
print("Sie haben die Zahl erraten!\n")
elif ver2 < zahl:
print("Die Zahl ist groesser. Noch ein Versuch\n")
elif ver2 > zahl :
print("Die Zahl ist kleiner. Noch ein Versuch\n")
# #################################################### Versuch 3
ver3 = int(input("Ihr dritter Versuch:\n"))
if ver3 == zahl :
print("Sie haben die Zahl erraten!\n")
elif ver3 < zahl:
print("Die Zahl ist groesser. Noch ein Versuch\n")
elif ver3 > zahl :
print("Die Zahl ist kleiner. Noch ein Versuch\n")
# #################################################### Versuch 4
ver4 = int(input("Ihr vierter Versuch:\n"))
if ver4 == zahl :
print("Sie haben die Zahl erraten!\n")
elif ver4 < zahl:
print("Die Zahl ist groesser. Noch ein Versuch\n")
elif ver4 > zahl :
print("Die Zahl ist kleiner. Noch ein Versuch\n")
# #################################################### Versuch 5
ver5 = int(input("Ihr fuenfter Versuch:\n"))
if ver5 == zahl :
print("Sie haben die Zahl erraten!\n")
elif ver5 < zahl:
print("Die Zahl ist groesser. Noch ein Versuch\n")
elif ver5 > zahl :
print("Die Zahl ist kleiner. Noch ein Versuch\n")
# #################################################### Versuch 6
ver6 = int(input("Ihr sechster Versuch:\n"))
if ver6 == zahl :
print("Sie haben die Zahl erraten!\n")
elif ver6 < zahl:
print("Die Zahl ist groesser. Noch ein Versuch\n")
elif ver6 > zahl :
print("Die Zahl ist kleiner. Noch ein Versuch\n")
# #################################################### Versuch 7
ver7 = int(input("Ihr siebter Versuch:\n"))
if ver7 == zahl :
print("Sie haben die Zahl erraten!\n")
elif ver7 < zahl:
print("Die Zahl ist groesser. Noch ein Versuch\n")
elif ver7 > zahl :
print("Die Zahl ist kleiner. Noch ein Versuch\n")
# #################################################### Versuch 8
ver8 = int(input("Ihr achter Versuch:\n"))
if ver8 == zahl :
print("Sie haben die Zahl erraten!\n")
elif ver8 < zahl:
print("Die Zahl ist groesser. Noch ein Versuch\n")
elif ver8 > zahl :
print("Die Zahl ist kleiner. Noch ein Versuch\n")
# #################################################### Versuch 9
ver9 = int(input("Ihr neunter Versuch:\n"))
if ver9 == zahl :
print("Sie haben die Zahl erraten!\n")
elif ver9 < zahl:
print("Die Zahl ist groesser. Noch ein Versuch\n")
elif ver9 > zahl :
print("Die Zahl ist kleiner. Noch ein Versuch\n")
# #################################################### Versuch 10
ver10 = int(input("Ihr letzer Versuch:\n"))
if ver10 == zahl :
print("Sie haben die Zahl erraten!\n")
elif ver10 < zahl:
print("Die Zahl ist groesser. Das war ihr letzer Versuch\n")
elif ver10 > zahl :
print("Die Zahl ist kleiner. Noch ein Versuch\n")
# #################################################### Versuch 4
Hallo nfehren,
stell Dir mal vor, es gibt Programme, die machen irgendetwas 100 oder 1000 mal. Wie würden die mit Deinem Vorgehen aussehen??
Das Geheimnis nennt sich Schleifen und wenn Du gelernt hast, wie man Schleifen macht, kannst Du auch nochmal fragen, wie man Schleifen abbricht.
nfehren hat geschrieben:HWenn man die Zahl schon nach dem vzB vierten Versuch erraten hat soll das Programm beendet werden. Gibt es dafür einen Befehl?
Du solltest dir allerdings mal weiter vorne im Tutorial anschauen was Schleifen sind und wie man sie verwendet. Mehrfach geschriebener beinahe identischer Code ist nahezu ein sicheres Zeichen dafür, dass man da dringend etwas überarbeiten sollte.
Sirius3 hat geschrieben:Hallo nfehren,
stell Dir mal vor, es gibt Programme, die machen irgendetwas 100 oder 1000 mal. Wie würden die mit Deinem Vorgehen aussehen??
Das Geheimnis nennt sich Schleifen und wenn Du gelernt hast, wie man Schleifen macht, kannst Du auch nochmal fragen, wie man Schleifen abbricht.
was dir meine Vorposter sagen ist, dass es eine Möglichkeit gibt identen Programmcode lediglich einmal zu schreiben und ihn trotzdem mehrfach auszuführen. In deinem Fall würde sich eine Schleife anbieten in welcher ein Teil deines Programmes (Überprüfung der Nutzereingabe) so lange wiederhot wird, solange der Nutzer falsch liegt.
(außerdem passt in deiner Ausführung Zeile 132 inhaltlich nicht: Es ist ja bereits der letzte Versuch)
nfehren hat geschrieben:Kannst du mir das nicht Oberflächlich erklären?
Was könnten wir hier erklären, was das Tutorial nicht bereits erklärt?
Wenn du spezielle Fragen dazu hast, dann können wir natürlich weiterhelfen. Es ist aber nicht wirklich sinnvoll, hier das Tutorial noch einmal hinzuschreiben.
Ok ich habe jetzt die Lösung: Ich habe das ganze in eine for schleife geschrieben die sich 10 mal wiederholt. Und die Beendung des Programmes habe ich mit "break" gemacht. Danke für die Antworten
import sys
import random
zahl = random.randrange(1, 100+1)
print("Sie haben 10 Versuche eine Zahl zwischen 0 und 100 zu finden!\n")
for i in range(1, 10):
ver1 = int(input("Ihr {0}. Versuch:\n".format(i)))
if ver1 == zahl :
print("Sie haben die Zahl erraten!")
break
elif ver1 < zahl:
print("Die Zahl ist groesser. Das war ihr {0}. Versuch\n".format(i))
elif ver1 > zahl :
print("Die Zahl ist kleiner. Das war ihr {0}. Versuch\n".format(i))
nfehren hat geschrieben:Kannst du mir das nicht Oberflächlich erklären?
Was könnten wir hier erklären, was das Tutorial nicht bereits erklärt?
Wenn du spezielle Fragen dazu hast, dann können wir natürlich weiterhelfen. Es ist aber nicht wirklich sinnvoll, hier das Tutorial noch einmal hinzuschreiben.
Tut mir leid ich hab zudem Zeitpunkt noch nicht deinen Post gelesen Danke für den Link!
nfehren hat geschrieben:Ok ich habe jetzt die Lösung: Ich habe das ganze in eine for schleife geschrieben die sich 10 mal wiederholt. Und die Beendung des Programmes habe ich mit "break" gemacht. Danke für die Antworten
Ich bin ja so froh über jeden der selber experimentiert statt wegen jedes Problems angerannt zu kommen. Danke dafür.
nfehren hat geschrieben:Ok ich habe jetzt die Lösung: Ich habe das ganze in eine for schleife geschrieben die sich 10 mal wiederholt. Und die Beendung des Programmes habe ich mit "break" gemacht. Danke für die Antworten
Ich bin ja so froh über jeden der selber experimentiert statt wegen jedes Problems angerannt zu kommen. Danke dafür.
Muss ich auch mal loben. Nichts finde ich schlimmer als auf dem ersten Blick lernwillige Poster, bei denen man als Antwort zu einem detaillierten Post nur eine abwandelte Form ds "Hä?!?" zu hören bekommt und ihnen damit trotzdem alles auf's Butterbrot schmiert, ohne dass sie es selbst verstanden habe.
Zuletzt geändert von snafu am Freitag 1. November 2013, 13:35, insgesamt 1-mal geändert.
bwbg hat geschrieben:Kaum machts einer selbst, klingen die Gläser, Flaschen und Methörner. Erstaunlich.
Dan klinge ich gleich mit und lobe das Vorgehen auch mal. Eigenleistung muss sich wieder lohnen Zudem wir ja oftmal eher negativ sind was sicher für Einsteiger demotivierend sein kann dass an so vielem rumgenörgelt wird.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
@nfehren: Text und mögliche Zahlen stimmen immer noch nicht überein. `randrange(101 + 1)` kann auch 101 als Ergebnis haben. An dieser Stelle würde ich ja einfach `randint()` verwenden, da ist der Endpunkt inklusive.
BlackJack hat geschrieben:@nfehren: Text und mögliche Zahlen stimmen immer noch nicht überein. `randrange(101 + 1)` kann auch 101 als Ergebnis haben. An dieser Stelle würde ich ja einfach `randint()` verwenden, da ist der Endpunkt inklusive.