Ja / Nein Abfrage am Ende

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
Varta
User
Beiträge: 7
Registriert: Montag 3. August 2015, 17:20

Hallöchen,

ich habe ein bisschen rumprobiert und rumgesucht, leider ohne Erfolg.
Ich möchte am Ende eine Scripts eine Abfrage mit den Antwortmöglichkeiten Y/N starten, bei Y wieder von vorne beginnen (neue Eingabe) und bei N breake.

Irgendwie funktioniert das ganze aber nicht mit einem einfachen

Code: Alles auswählen

x = raw_input()
if x = N
  breake
else
  continue
Über eure Hilfe wäre ich sehr dankbar.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Ich sag das mal so:

1.
2. |||
3. |
4. |
5.

Das ist nur die Anzahl der Syntaxfehler.
Wenn du den Code zeigst, den du wirklich verwendest, dann können wir auch helfen.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Dein Problem laesst sich ganz einfach mit Funktionen loesen:

Code: Alles auswählen

def main():
    # hauptprogramm
    ....

if __name__ == "__main__":
    while True:
        main()
        repeat = raw_input()
        if repeat.upper() != "Y":
            break
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Ich habe deinen Code mal korrigiert:

Code: Alles auswählen

x = raw_input("Benutzereingabe: ")

if x == "N":
    # break
    print "Wert war N!"
else:
    # continue
    print "Ich setze die Arbeit fort!"

print "Ende."
Du kannst diesen Code mal bei Dir eingeben und testen und damit rumspielen. Die Anweisungen break und continue kannst Du nur in Schleifen verwenden, sie machen auch nur dort Sinn. Schleifen sind while <Bedingung>: <Mach ...> oder for x in range(12): <Mach ...>. Bei der while-Schleife wird der Code-Block in der Schleife solange ausgeführt, bis eine Bedingung eingetreten ist; bei der for-Schleife wird der Code-Block x-Mal ausgeführt. Mit der break-Anweisung kannst Du eine Schleife abbrechen; mit der continue-Anweisung kannst Du die Ausführung eines Durchgangs der Schleife abbrechen.

Du findest hier ein deutsches Tutorial mit einer konkreten Erklärung.

Wenn Du mich fragst: Du müsstest Dich noch mal mit den Grundlagen befassen. Aktuell stimmt die "Rechtschreibung" der Anweisungen noch nicht.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

PS Du arbeitest mit einer if-else-Bedingung, suchst aber eigentlich eine while-Schleife, wenn ich Deine einleitenden Worte richtig verstehe.

Code: Alles auswählen

eingabe = ""                # vorbelegt

print "1. Herangehensweise"

while eingabe != "N":

    eingabe = raw_input("Bitte geben Sie Ihren Namen ein: ")
    print "Name:", eingabe


print "2. Herangehensweise"

while True:

    eingabe = raw_input("Bitte geben Sie Ihren Namen ein: ")

    if eingabe == "N":
        print "Sie haben das Programm beendet."
        break
    else:
        print "Name:", eingabe


print "Hier geht es mit Deinem Programm weiter."
Ich habe mal ein Grundgerüst geschrieben. Ich hoffe, es ist verständlich, wie ich Dein Problem jeweils löse.
Varta
User
Beiträge: 7
Registriert: Montag 3. August 2015, 17:20

Danke, ich hatte nur irgendwie andauernde Syntaxfehler, kp was ich da gebastelt hatte. Habs jetzt so gelöst:

Code: Alles auswählen

while True:
    #Hauptprogramm
    x = raw_input('Nochmal? (Y/N)')
    if x != "Y":
        print "Bis zum nächsten mal!"
        break
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Gewöhne dir direkt sinnvolle Namen für die Bezeichner an. x ist ein unpassender Name, answer wäre besser.
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Varta hat geschrieben:ich hatte nur irgendwie ... kp
Dein Code zeigt weiterhin ein break innerhalb eines if Blockes, wo es gar sinnlos ist, wie oben beschrieben.

Wenn du grade irgendwie keinen Plan hast, einfach nochmal die Grundlagen ansehen, und etwas drüber nachdenken...

edit: cofi hat Recht, siehe unten.
Zuletzt geändert von Kebap am Donnerstag 6. August 2015, 14:13, insgesamt 1-mal geändert.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Da der `if` Block aber innerhalb einer `while` Schleife ist hat das `break` durchaus eine Funktion ;)

@Varta: Die Funktion in meinem Beispiel war da nicht aus Spass. Sobald das Hauptprogramm laenger als 10 Zeilen ist, wird undurchsichtig warum genau da eine Schleife ist. Beispielsweise ob es nur eine Programmwiederholung ist oder tatsaechlich Teil des eigentlichen Programmes.
Antworten