2016-07-10 2 views
0

Hier ist was ich bisher ... wenn Sie das Modul laufen und wählen Sie es einfach wiederholt den Wurf unendlich wiederholt. Hilfe?Kann nicht aufhören, das Programm wiederholt mit "while" Schleife ... Python

answer=input("Would you like to play? Answer Y/N: ") 

while answer == "Y" or answer == "y" or answer == "yes": 
    import random 
    die=random.randint(1,6) 

    dieTwo=random.randint(1,6)  

    if die== 1: 
     print("XXXXXXX") 
     print("X  X") 
     print("X O X") 
     print("X  X") 
     print("XXXXXXX") 
     print("You rolled a one...") 
    if die== 2: 
     print("XXXXXXX") 
     print("X O X") 
     print("X  X") 
     print("X O X") 
     print("XXXXXXX") 
     print("You rolled a two...") 
    if die== 3: 
     print("XXXXXXX") 
     print("X O X") 
     print("X O X") 
     print("X O X") 
     print("XXXXXXX") 
     print("You rolled a three...") 
    if die== 4: 
     print("XXXXXXX") 
     print("X O O X") 
     print("X  X") 
     print("X O O X") 
     print("XXXXXXX") 
     print("You rolled a four...") 
    if die== 5: 
     print("XXXXXXX") 
     print("X O O X") 
     print("X O X") 
     print("X O O X") 
     print("XXXXXXX") 
     print("You rolled a five...") 
    if die== 6: 
     print("XXXXXXX") 
     print("X O O X") 
     print("X O O X") 
     print("X O O X") 
     print("XXXXXXX") 
     print("You rolled a six...") 

    if dieTwo==1: 
     print("XXXXXXX") 
     print("X  X") 
     print("X O X") 
     print("X  X") 
     print("XXXXXXX") 
     print("and a one") 
    if dieTwo==2: 
     print("XXXXXXX") 
     print("X O X") 
     print("X  X") 
     print("X O X") 
     print("XXXXXXX") 
     print("and a two") 
    if dieTwo==3: 
     print("XXXXXXX") 
     print("X O X") 
     print("X O X") 
     print("X O X") 
     print("XXXXXXX") 
     print("and a three") 
    if dieTwo==4: 
     print("XXXXXXX") 
     print("X O O X") 
     print("X  X") 
     print("X O O X") 
     print("XXXXXXX") 
     print("and a four") 
    if dieTwo==5: 
     print("XXXXXXX") 
     print("X O O X") 
     print("X O X") 
     print("X O O X") 
     print("XXXXXXX") 
     print("and a five") 
    if dieTwo==6: 
     print("XXXXXXX") 
     print("X O O X") 
     print("X O O X") 
     print("X O O X") 
     print("XXXXXXX") 
     print("and a six") 
print("") 

if answer=="N" or answer=="n" or answer=="no": 
    print("Thank you for playing.") 
+0

Ja, und das ist genau das, wofür Sie es programmiert haben ... Wahrscheinlich möchten Sie Ihre Antwort = Eingabe (...) innerhalb Ihrer While-Schleife verschieben, die auch eine Anfangsbedingung wie Antwort = 'Y' erfordern würde. – TocToc

Antwort

2

Warum sollten Sie erwarten, dass dies alles andere als eine Endlosschleife ist? Sie haben eine while Schleife, die für Ihren Zustand überprüft, und dieser Zustand wird immer wahr sein, weil man nie answer

Sie ändert auch eine Funktion zum Drucken Ihrer Würfel machen könnten, und stattdessen or verwenden Sie answer in ("Y", "y", "yes") als ein Beispiel verwenden können wenn du an solchen Orten, an denen du solche Bedingungen hast, ein Torer sein wolltest.

0

Da Sie die Eingabe answer nur einmal vom Benutzer nehmen, bleibt sein Wert während der gesamten Ausführung des Programms gleich. Somit wird das Prädikat while immer True ausgewertet, wenn Sie 'Y' oder 'y' oder bestehen.

Ich würde vorschlagen, Sie nehmen jedes Mal, wenn Sie iterieren. Etwas Ähnliches könnte helfen:

while 1: 

answer=input("Would you like to play? Answer Y/N: ") 
if answer in ('Y', 'y', 'yes'): 
# play the game 
else: 
# stop the game 

Ein weiterer Vorschlag: Sie nicht innerhalb der Schleife importieren.
Versuchen Sie, alle Ihre Importanweisungen an den Anfang Ihres Skripts zu setzen.

Happy Coding!