Befehl zum Beenden von Python

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
nfehren
User
Beiträge: 98
Registriert: Donnerstag 31. Oktober 2013, 15:11

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?

Hier mein Code:

Code: Alles auswählen

#!/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


Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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?
Im Tutorial steht das irgendwo auf dieser Seite.

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.
nfehren
User
Beiträge: 98
Registriert: Donnerstag 31. Oktober 2013, 15:11

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.
Kannst du mir das nicht Oberflächlich erklären?
andiT
User
Beiträge: 7
Registriert: Dienstag 29. Oktober 2013, 00:58

Servus,

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)

lg, AndiT
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
nfehren
User
Beiträge: 98
Registriert: Donnerstag 31. Oktober 2013, 15:11

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 :)

Hier die Lösung:

Code: Alles auswählen

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
User
Beiträge: 98
Registriert: Donnerstag 31. Oktober 2013, 15:11

/me hat geschrieben:
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! :wink:
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

nfehren hat geschrieben:Ok ich habe jetzt die Lösung: Ich habe das ganze in eine for schleife geschrieben die sich 10 mal wiederholt.
Sie macht nur neun Durchläufe. Schau dir range noch einmal genauer an.
Das Leben ist wie ein Tennisball.
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

/me hat geschrieben:
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.
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Kaum machts einer selbst, klingen die Gläser, Flaschen und Methörner. Erstaunlich. :D
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

bwbg hat geschrieben:Kaum machts einer selbst, klingen die Gläser, Flaschen und Methörner. Erstaunlich. :D
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
User
Beiträge: 98
Registriert: Donnerstag 31. Oktober 2013, 15:11

EyDu hat geschrieben:
nfehren hat geschrieben:Ok ich habe jetzt die Lösung: Ich habe das ganze in eine for schleife geschrieben die sich 10 mal wiederholt.
Sie macht nur neun Durchläufe. Schau dir range noch einmal genauer an.
Ah, danke ist mir gar nicht aufgefallen habe jetzt auf

Code: Alles auswählen

for i in range(1, 11):


verbessert :)


Danke für die Blumen :lol:
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Im gleichen Geiste: Denk mal ueber die 2 Zeilen nach:

Code: Alles auswählen

zahl = random.randrange(1, 100+1)
print("Sie haben 10 Versuche eine Zahl zwischen 0 und 100 zu finden!\n")
nfehren
User
Beiträge: 98
Registriert: Donnerstag 31. Oktober 2013, 15:11

cofi hat geschrieben:Im gleichen Geiste: Denk mal ueber die 2 Zeilen nach:

Code: Alles auswählen

zahl = random.randrange(1, 100+1)
print("Sie haben 10 Versuche eine Zahl zwischen 0 und 100 zu finden!\n")

Code: Alles auswählen

zahl = random.randrange(1, 101+1)
print("Sie haben 10 Versuche eine Zahl zwischen 0 und 100 zu finden!\n")
Meintest du das so? Also das es bei (1,100+1) Nur eine Zahl zwischen 1 und 99 werden kann?
Hab ich jetzt auch verbessert Vielen Dank


Edit: Oh mir ist eingefallen das 0 auch eine mögliche Zahl sein muss also müsste ich so schreiben:

Code: Alles auswählen

zahl = random.randrange(101+1)
print("Sie haben 10 Versuche eine Zahl zwischen 0 und 100 zu finden!\n")
BlackJack

@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.
nfehren
User
Beiträge: 98
Registriert: Donnerstag 31. Oktober 2013, 15:11

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.

Code: Alles auswählen

zahl = random.randint(0, 100)
print("Sie haben 10 Versuche eine Zahl zwischen 0 und 100 zu finden!\n")
Ok perfekt Danke!

Habe jetzt randint() benutzt und auch mit:

Code: Alles auswählen

import random
while True:
    zahl = random.randint(0, 10)
    print(zahl)
getestet Super Danke!

Kann ich das auch auf

Code: Alles auswählen

for i in range(1, 11):
anwenden oder gibt es da eine ähnliche Funktion?
Antworten