Как заставить условный цикл while повторить процедуру n раз? - PullRequest
1 голос
/ 05 апреля 2019

У меня есть эта простая игра с угадыванием чисел, и я хотел бы, чтобы, как только пользователь угадал правильное случайное число, я хочу сохранить количество испытаний в списке.Допустим, если пользователь найдет число в 9 испытаниях, 9 будет сохранено в списке, но я хочу запустить игру 3 раза и сохранить эти 3 испытания в списке, а затем получить среднее значение.Проблема, с которой я сталкиваюсь, - это когда пользователь находит n раз, он видит его в списке, но не продолжает.Останавливается после 1 игры.Как мне заставить его работать 3 раза?Любая помощь будет оценена.Спасибо!

import random
def main():

    num = random.randint(1, 1000)

    my_guess = 0
    counter = 0
    list_trial = []
    num_times = 3
    j = 0

    while my_guess != num and j < num_times:
        my_guess = int(input('Make a guess  -->   '))
        counter += 1
        if my_guess < num:
            print('Too low!')
        elif my_guess > num:
            print('Too high!')
        else:
            print('Finally, you got it !')
            print('It took you ' + str(counter) + ' tries...')
            list_trial.append(counter)

    print(list_trial)   #prints the number of trials...
    print(sum(list_trial / len(list_trial)))   # prints the average of the trials...

main()

Ответы [ 3 ]

1 голос
/ 05 апреля 2019

Вот некоторые проблемы с вашим кодом:

  • Вы не увеличиваете j в цикле while.Где-то в вашем цикле должно быть j+=1.

  • В вашем последнем операторе печати есть неуместные скобки.Это должно быть print(sum(list_trial) / len(list_trial)).

  • Наконец, если вы увеличиваете j, логика цикла while (while my_guess != num and j < num_times) завершается при первом действительном предположении.

Собираем все это вместе:

num_times = 3
j = 0
list_trial = []

while j < num_times:
    my_guess = 0
    counter = 0
    num = random.randint(1, 3)
    while my_guess != num:
        my_guess = int(input('Make a guess  -->   '))
        counter += 1
        if my_guess < num:
            print('Too low!')
        elif my_guess > num:
            print('Too high!')
        else:
            print('Finally, you got it !')
            print('It took you ' + str(counter) + ' tries...')
            list_trial.append(counter)
    j += 1

print(list_trial)  # prints the number of trials...
print(sum(list_trial) / len(list_trial))  # prints the average of the trials...
0 голосов
/ 05 апреля 2019

Вы можете просто использовать длину своего списка в качестве проверки в цикле while, тогда вам вообще не понадобится переменная j:

import random

list_trial = []
num_times = 3

while len(list_trial) < num_times:
    num = random.randint(1, 1000)
    my_guess = 0
    counter = 0
    while my_guess != num:
        my_guess = int(input('Make a guess  -->   '))
        counter += 1
        if my_guess < num:
            print('Too low!')
        elif my_guess > num:
            print('Too high!')
        else:
            print('Finally, you got it !')
            print('It took you ' + str(counter) + ' tries...')
            list_trial.append(counter)

print(list_trial)   #prints the number of trials...
print(sum(list_trial / len(list_trial)))   # prints the average of the trials...
0 голосов
/ 05 апреля 2019

вы можете разделить ваши while на два отдельных while с. один для проверки num_times и внутренний while для самой игры, например:

list_trial = []
num_times = 3
j = 0

while j < num_times:
    num = random.randint(1, 1000)
    my_guess = 0
    counter = 0
    while my_guess != num:
        my_guess = int(input('Make a guess  -->   '))
        counter += 1
        if my_guess < num:
            print('Too low!')
        elif my_guess > num:
            print('Too high!')
        else:
            print('Finally, you got it !')
            print('It took you ' + str(counter) + ' tries...')
            list_trial.append(counter)
    j += 1

print(list_trial)   #prints the number of trials...
print(sum(list_trial) / len(list_trial))
...