2016-11-24 11 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() 

Есть ли способ сделать этот код проще и иметь одинаковую функциональность? Я пробовал другую версию без использования классов, но после ввода другого символа, кроме «y» или «n», код заканчивается.My first roll the dice python game

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

Ваша первая версия не используя классы. Он использует функцию –

ответ

0

Причина программа завершается после того, как вы вводите ничего, кроме «у» или «да», потому что это то, что вы взяли в качестве условия, чтобы остаться внутри цикла. Ваша программа предполагает, что «пребывание внутри цикла» означает «игра в игру», но когда кто-то вводит незаконный вход, они также должны оставаться в цикле. Единственной причиной выхода было бы прямо спросить об этом, отвечая на «n» или «no».

Таким образом:

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!") 

 Смежные вопросы

  • Нет связанных вопросов^_^