2016-08-04 13 views
0

Ich versuche, eine Schleife zu erstellen, die ein Benutzer am Ende des Programms anhalten kann. Ich habe verschiedene Lösungen ausprobiert, von denen keine funktioniert hat, alles was ich geschafft habe, ist die Schleife zu erstellen, aber ich kann es nicht beenden. Ich habe erst vor kurzem begonnen, Python zu lernen, und ich wäre dankbar, wenn mich jemand zu diesem Thema aufklären könnte.Endlosschleife beenden (Python)

def main(): 
while True: 
    NoChild = int(0) 
    NoAdult = int(0) 
    NoDays = int(0) 
    AdultCost = int(0) 
    ChildCost = int(0) 
    FinalCost = int(0) 


    print ("Welcome to Superslides!") 
    print ("The theme park with the biggest water slide in Europe.") 

    NoAdult = int(raw_input("How many adults are there?")) 
    NoChild = int(raw_input("How many children are there?")) 
    NoDays = int(raw_input("How many days will you be at the theme park?")) 
    WeekDay = (raw_input("Will you be attending the park on a weekday? (Yes/No)")) 

    if WeekDay == "Yes": 
     AdultCost = NoAdult * 5 

    elif WeekDay == "No": 
     AdultCost = NoAdult * 10 

    ChildCost = NoChild * 5 

    FinalCost = (AdultCost + ChildCost)*NoDays 

    print ("Order Summary") 
    print("Number of Adults: ",NoAdult,"Cost: ",AdultCost) 
    print("Number of Children: ",NoChild,"Cost: ",ChildCost) 
    print("Your final total is:",FinalCost) 
    print("Have a nice day at SuperSlides!") 

    again = raw_input("Would you like to process another customer? (Yes/No)") 
    if again =="No": 
     print("Goodbye!") 
     return 
    elif again =="Yes": 
     print("Next Customer.") 

    else: 
     print("You should enter either Yes or No.") 

if __name__=="__main__": 
main() 
+1

Wann würden Sie erwarten, dass Ihr Programm endet und was macht es stattdessen? Außerdem gibt es mehrere Probleme - Sie verwenden Python 3 '' print() 'Funktionssyntax zusammen mit Python 2' raw_input() '. Keine Notwendigkeit für all diese 'var = int (0)' Zeilen - Sie müssen Variablen in Python nicht initialisieren. Was passiert, wenn der Benutzer weder mit Ja noch mit Nein zur ersten Frage antwortet? –

+0

Ich versuchte mit Pause, aber die Schleife fuhr fort zu laufen. –

+0

Ersetzen Sie die Rückgabe mit Pause. – lonewaft

Antwort

0

können Sie die Rückkehr ändern zu brechen und es wird die While-Schleife

if again =="No": 
    print("Goodbye!") 
    break 
+0

Ich bin mir nicht sicher, ob das das Problem ist. – Li357

+1

'return' beendet die Funktion alle und unterbricht die Schleife. Es gibt keine Notwendigkeit für "break" – dashiell

+0

Korrekt, aber die Verwendung von break ermöglicht mehr in __main__ getan werden –

0

Statt dessen verlassen:

while True: 

Sie sollten diese verwenden:

again = True 
while again: 
    ... 

    usrIn = raw_input("Would you like to process another customer? y/n") 
    if usrIn == 'y': 
     again = True 
    else 
     again = False 

Ich habe es einfach auf False gesetzt, aber Sie c und immer nur den Benutzer nach einer neuen Eingabe fragen, wenn sie nicht y oder n eingeben.

0

Ich habe Ihren Code mit Python 3.5 überprüft und es funktionierte, nachdem ich die raw_input zu input geändert habe, da Eingabe in 3.5 der Raw_input von 2,7 ist. Da Sie print() als Funktion verwenden, sollten Sie einen Import der Druckfunktion aus einem zukünftigen Paket in Ihrem Importbereich haben. Ich kann in Ihrem Skript keinen Importabschnitt sehen.

Was genau funktioniert nicht?

Zusätzlich: Es ist eine gute Angewohnheit, eine Befehlszeilenanwendung zu beenden, indem Sie mit einem Exit-Code beenden, anstatt zu brechen und zu beenden. So müßten Sie

import sys 

im Import-Abschnitt Ihres Python-Skript, und wenn zum Beenden des Programms durch den Anwender überprüft, machen ein

if again == "No": 
    print("Good Bye") 
    sys.exit(0) 

Dies Ihnen die Möglichkeit, im Fall eines Fehlers gibt mit einem anderen Exit-Code beenden.