2016-11-24 2 views
0
import random 


def diceroll(): 
     num_dice = random.randint(1,6) 
     print("You got " + str(num_dice) + "!") 
diceroll() 
def question(): 
    response = input("You want to roll again?\n") 
     while response == "y": 
     diceroll() 
     response = input("You want to roll again?\n") 
    if response == "n": 
     print("Thank you for playing! :) ") 
     exit() 
    while "y" or "n" not in response: 
      response = input("Please answer with y or n!\n") 
      while response == "y": 
       diceroll() 
       response = input("You want to roll again?\n") 
      if response == "n": 
       print("Thank you for playing! :) ") 
       exit() 
question() 

Gibt es eine Möglichkeit, ich könnte diesen Code einfacher und habe die gleiche Funktionalität? Ich versuchte eine andere Version ohne Klassen zu verwenden, aber wenn ich ein anderes Zeichen neben "y" oder "n" eingeben Der Code endet.Meine erste Rolle ein Würfel Python Spiel

import random 

answer = "yes" 

while answer in ["yes", "y"]: 
    roll = random.randint(1,6) 
    print("You rolled " + str(roll) + "!") 
    answer = input("Would you like to roll again?\n") 
if answer in ["n", "no"]: 
    print("Thank you for playing!") 
else : 
    print("Please answer with yes or no!") 
    answer = input("Would you like to roll again?\n") 
+0

Ihre erste Version wird mit Klassen nicht. Es benutzt eine Funktion –

Antwort

0

Der Grund das Programm beendet, nachdem Sie etwas anderes als „y“ oder „Ja“ eingeben, weil das ist, was man als Bedingung in der Schleife zu bleiben nahm. Ihr Programm geht davon aus, dass "in der Schleife bleiben" bedeutet "Spiel spielen", aber wenn jemand illegale Eingabe eingibt, sollten sie auch innerhalb der Schleife bleiben. Der einzige Grund zum Beenden wäre, explizit darum zu bitten, indem man "n" oder "nein" antwortet.

So:

import random 

while answer not in ["no", "n"]: 
    roll = random.randint(1, 6) 
    print("You rolled " + str(roll) + "!") 
    answer = input("Would you like to roll again?\n") 
    if answer not in ["yes", "y", "no", "n"]: 
     print("Please answer with yes or no!") 
     answer = input("Would you like to roll again?\n") 

print("Thank you for playing!")