2017-02-14 5 views
2

Ich bin ein Python-Neuling und ich habe Probleme mit einem Skript bekommen. Der Punkt des Skripts ist ein Würfel zu erstellen, die eine Zufallszahl würfelt zwischen 1 und 6 Das Skript sieht wie folgt aus:Python Dice Script fehlgeschlagen

import random 
while True: 
    roll = input("Wanna roll? y/n: ").strip().lower() 
    if roll == "y": 
     dice = random.randint(1,6) 
     print(dice) 
    else: 
     again = input("How about now? y/n: ").strip().lower() 
     if again == "y": 
      dice = random.randint(1,6) 
      print(dice) 
     else: 
      print(again) 

Damit ist der Code. Im Idealfall möchte ich, dass Python fragt: "Will'n roll?" und wenn der Benutzer "y" eingibt, sollte Python eine zufällige Zahl zwischen 1 und 6 zurückgeben. Dieses Bit funktioniert gut.

Wenn der Benutzer jedoch "n" eingibt, möchte ich Python fragen "Wie wäre es jetzt?" Wenn der Benutzer "y" eingibt, möchte ich, dass Python eine Zufallszahl zwischen 1 und 6 zurückgibt. Dieses Bit funktioniert auch gut.

Wo ich auf Probleme stoße, ist, wenn der Benutzer "n" für die Frage "Wanna roll?" AND gibt auch "n" für die zweite Frage "Wie wäre es jetzt?" Das Programm SOLLTE einfach den Benutzer fragen "Wie wäre es jetzt?" immer und immer wieder, bis er schließlich knackt und "y" tippt (zu diesem Zeitpunkt gibt Python ihm eine Zufallszahl zwischen 1 und 6). Doch was passiert, ist, dass Python dies zurück:

n 
How about now? y/n: 

So ist es die Antwort des Benutzers Druck („n“) sowie die Frage erneut zu stellen.

Ich kann nicht herausfinden, wie Python die Frage "Wie wäre es jetzt?" ohne auch die Antwort der Benutzereingabe zu geben.

Entschuldigung, wenn das eine offensichtliche Frage ist und/oder wenn die Formatierung falsch/unklar ist. Ich war erst seit ein paar Wochen hier.

Vielen Dank im Voraus!

Edit: Das erwartete Verhalten des Skripts ist wie folgt:

"? Wanna Roll y/n:"

"Wie wäre es jetzt y/n:"

„Wie wäre es ? jetzt y/n: "

"Wie wäre es jetzt y/n:?"

und so weiter, bis der Benutzer die Frage beantwortet "Wie wäre es jetzt" mit einem "y" anstelle eines "n", an diesem Punkt sollte Python eine Zahl zwischen 1 und 6 zurückgeben und dann fragen, ob der Benutzer erneut würfeln möchte.

EDIT 2: Es gab einen Fehler im Code. Ich habe .script() geschrieben, als ich .strip() eingeben wollte - Tut mir leid. Dies ist nicht die Ursache meines Problems, weil ich es richtig verstanden habe, als ich das Skript ursprünglich geschrieben habe. Leider :-(

+0

Was das erwartete Verhalten ist? Können Sie es ausdrückte in der Frage Was erwartet Sie in stdout –

+0

welche Version von Python verwenden Sie? Ich bekomme einen Absturz sowohl auf 2.7 und 3.5 aufgrund Ihrer '.script()' verwenden, die ich noch nie zuvor gesehen habe. Was ist das gemeint – asongtoruin

+0

Sorry Kumpel Ich wollte schreiben .strip() Ich habe es jetzt behoben – Nellington

Antwort

1

Wie wäre das?

import random 
while True: 
    roll = input("Wanna roll? y/n: ").strip().lower() 
    while roll != "y": 
     roll = input("How about now? y/n: ").strip().lower() 

    dice = random.randint(1,6) 
    print(dice) 

Es wird halten den Benutzer zu einer Eingabe zu fragen, bis sie y antworten.

+0

Das sieht ausgezeichnet aus.Vielen Dank :-) – Nellington

+0

@Nellington keine Sorgen - wenn es Ihr Problem gelöst hat, gibt es ein grünes Häkchen in der oberen linken Ecke der Antwort, die Sie verwenden können, um es als die Antwort zu markieren. – asongtoruin