2016-07-15 4 views
0

Я изучаю python, и одно из упражнений - сделать игру с простым умножением, которая выполняется каждый раз, когда вы правильно отвечаете. Хотя я сделал игру работать, я хотел бы иметь возможность подсчитать количество попыток, так что, когда я правильно ответил несколько раз, цикл/функция должна закончиться. Моя проблема заключается в том, что в конце кода функция вызывается снова, количество попыток возвращается к тому, что я изначально установил, очевидно. Как я могу идти об этом, так что я могу рассчитывать каждый цикл, и заканчиваться в указанном количестве попыток ?:Подсчет числа циклов python

def multiplication_game(): 
    num1 = random.randrange(1,12) 
    num2 = random.randrange(1,12) 

    answer = num1 * num2 

    print('how much is %d times %d?' %(num1,num2)) 

    attempt = int(input(": ")) 

    while attempt != answer: 
     print("not correct") 

     attempt = int(input("try again: ")) 
    if attempt == answer: 
     print("Correct!") 

multiplication_game() 
+0

Вы можете отформатировать свой код. Отступ не прав –

+1

Неясно, используете ли вы его рекурсивно или нет - можете ли вы форматировать свой код – nagyben

+0

Три возможности: Добавить глобальную переменную счетчика; передать текущий номер поворота в качестве параметра функции или (предпочтительно) изменить рекурсию на другой цикл. –

ответ

1

Вы могли бы окружить вызов multiplication_game() в конце с петлей. Например:

for i in range(5): 
    multiplication_game() 

позволит вам играть в игру 5 раз до окончания программы. Если вы хотите на самом деле подсчитать, в каком раунде вы можете создать переменную, чтобы отслеживать и увеличивать эту переменную каждый раз, когда игра заканчивается (вы бы поставили это внутри определения функции).

1

Я хотел бы использовать for петлю и break из него:

attempt = int(input(": ")) 

for count in range(3): 
    if attempt == answer: 
     print("correct") 
     break 

    print("not correct") 
    attempt = int(input("try again: ")) 
else: 
    print("you did not guess the number") 

Вот некоторые документы по else clauses for for loops если вы хотите более подробную информацию о том, как это работает.

0
NB_MAX = 10 #Your max try 
def multiplication_game(): 
    num1 = random.randrange(1,12) 
    num2 = random.randrange(1,12) 

    answer = num1 * num2 
    i = 0 
    while i < NB_MAX: 
      print('how much is %d times %d?' %(num1,num2)) 

      attempt = int(input(": ")) 

      while attempt != answer: 
       print("not correct") 

      attempt = int(input("try again: ")) 
      if attempt == answer: 
       print("Correct!") 
      i += 1 

multiplication_game() 
Смежные вопросы