2017-02-14 5 views
2

Я новичок в Python, и у меня возникли проблемы со сценарием. Суть сценария заключается в создании кости, который катится случайное число между 1 и 6. Сценарий выглядит следующим образом:Python Dice Script Failed

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) 

Так что это код. В идеале, я хочу, чтобы Python спросил «Хотите бросить»? и, если пользователь вводит «y», Python должен возвращать случайное число между 1 и 6. Этот бит работает нормально.

Если, однако, пользователь вводит «n», я хочу, чтобы Python спросил «Как насчет сейчас?». Если пользователь набирает «y», то я хочу, чтобы Python возвращал случайное число от 1 до 6. Этот бит отлично работает.

Где я сталкиваюсь с проблемами, когда пользователь набирает «n» для вопроса «Хотите бросить?» И также набирает «n» для второго вопроса «Как насчет сейчас?» Программа ДОЛЖНА просто продолжать спрашивать пользователя «Как насчет сейчас?» снова и снова, пока он в конце концов не треснет и не наберет «y» (в этот момент Python дает ему случайное число от 1 до 6). Однако то, что происходит в том, что Python возвращает это:

n 
How about now? y/n: 

Так это печать ответ пользователя («N»), а также еще раз задать вопрос.

Я не могу понять, как получить Python, чтобы задать вопрос «Как насчет сейчас?» без указания ответа пользователя.

Извините, если это очевидный вопрос и/или если форматирование неверно/неясно. Я занимаюсь этим всего несколько недель.

Заранее благодарен!

Edit: ожидаемое поведение сценария, как это:

"? Хотите ролл у/п:"

"Как о теперь у/п:"

«Как насчет ? Теперь у/п: "

„Как о теперь у/п:?“

и так далее до тех пор, пока пользователь не отвечает на вопрос„Как насчет сейчас“ с «y» вместо «n», в этот момент Python должен вернуть число от 1 до 6, а затем спросить, хочет ли пользователь снова катиться.

EDIT 2: В коде была ошибка. Я поставил .script(), когда хотел набрать .strip() - Извините. Это не является источником моей проблемы, потому что я правильно понял это, когда написал сценарий изначально. К сожалению :-(

+0

Что такое ожидаемое поведение? Вы можете поставить его в вопрос как вы ожидаете в stdout –

+0

, какую версию Python вы используете? Я получаю крах как на 2.7, так и 3.5 из-за использования '.script()', с которым я никогда не сталкивался раньше. Что это значит? делать? – asongtoruin

+0

Извините, я намеревался написать .strip() Я исправил его сейчас. – Nellington

ответ

1

Как насчет этого?

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) 

Он будет постоянно спрашивать пользователя для входа, пока они не ответ y.

+0

Это выглядит отлично.Большое спасибо :-) – Nellington

+0

@Nellington не беспокоится - если он решил вашу проблему, в левом верхнем углу ответа есть зеленый галочка, который вы можете использовать, чтобы отметить это как ответ. – asongtoruin