Вывод несколько раз рандомной внутренней функции, пока цикл не завершится

Нужно вывести несколько раз, случайную внутренную функцию из трех. Проблема заключается в том что выводит сперва все три, а потом рандомную. Внутри каждой имеется счетчик, для цикла, который обнуляется.

f1_1 = random.randint(-5100, -3100)
f1_2 = random.randint(-20, 100)
f1_3 = random.randint(0, 110)

count=0


def func_1(f1,f2,f3,count):
    def func_1_1(f1_1,f1_2,f1_3,count):
        print('Внутренняя функция 1_1', f1_1)

        count += 1
        # print(count, 'счетчик')
        return count
    count = func_1_1(f1_1,f1_2,f1_3,count)
    # print(count, 'после первой')

    def func_1_2(f1_1,f1_2,f1_3,count):
        print('Внутренняя функция 1_2', f1_2)
        count += 1
        # print(count, 'счетчик')
        return count

    count = func_1_2(f1_1,f1_2,f1_3,count)
    # print(count, 'после второй')

    def func_1_3(f1_1,f1_2,f1_3,count):
        print('Внутренняя функция 1_3', f1_3)
        count += 1
        # print(count, 'счетчик')
        return count

    count = func_1_3(f1_1,f1_2,f1_3,count)
    # print(count,'после третьей')

    r = [func_1_1, func_1_2, func_1_3]
    d=random.choice(r)(f1_1,f1_2,f1_3,count)
    # print(count, 'счетчик')
    return count
    return d
    print(d)


count=0

while count<6:
    func_1(f1,f2,f3,count)

вот что получается на выходе если вызывать функцию без цикла

Внутренняя функция 1_1 -3230
Внутренняя функция 1_2 1
Внутренняя функция 1_3 90
Внутренняя функция 1_2 1

как выводить только случайную функцию, т.е 4 строчку? с циклом получается бесконечный вывод, т.к счетчик обнуляется


Ответы (1 шт):

Автор решения: Zhihar

бррр

у вас внутри каждой функции print

и после описания каждой функции вы ее вызываете

count = func_1_1(f1_1,f1_2,f1_3,count)

конечно сначала у вас выводится результат работы 3х функций :)

def func_1(f1,f2,f3,count):
    def func_1_1(f1_1,f1_2,f1_3,count):
        print('Внутренняя функция 1_1', f1_1)

        count += 1
        # print(count, 'счетчик')
        return count

    def func_1_2(f1_1,f1_2,f1_3,count):
        print('Внутренняя функция 1_2', f1_2)
        count += 1
        # print(count, 'счетчик')
        return count

    def func_1_3(f1_1,f1_2,f1_3,count):
        print('Внутренняя функция 1_3', f1_3)
        count += 1
        # print(count, 'счетчик')
        return count

    r = [func_1_1, func_1_2, func_1_3]
    d=random.choice(r)(f1_1,f1_2,f1_3,count)
    return d
→ Ссылка