Как реализовать функцию с переменными аргументами в назначении проекта

#python

#python

Вопрос:

На моей первой неделе изучения cs и работы над моим первым заданием проекта (на python3) Я столкнулся с препятствием. В проекте есть встроенная функция, к которой я не могу получить доступ, функция в основном делает это-

«Тестовая игральная кость является детерминированной: она всегда циклически перебирает фиксированную последовательность значений, которые передаются в качестве аргументов. Функция генерирует тестовые кубики make_test_dice . »

 test_dice = make_test_dice(4, 1, 2)
>>>test_dice()
4
1 on the 2nd call, 2 on the 3rd call and 4 on the 4th call 
 

Теперь, после довольно долгого исследования, я наткнулся на аргументы и функцию yield для выполнения этой работы, но я не смог ее реализовать из-за ошибок.

Любая помощь по реализации этой определенной функции будет оценена!

Комментарии:

1. Итак, что вы пробовали и какие ошибки? В общем, у вас больше шансов получить помощь, если вы покажете людям, что вы пытались, и ошибки, которые вы получили, чем если бы вы просто намекнули на то, что пытались что-то сделать, и сказали, что это не работает.

Ответ №1:

Вы могли бы сделать следующее cycle с помощью стандартной библиотеки itertools :

 from itertools import cycle

def make_test_dice(*args):
    next_dice = cycle(args)
    def dice():
        return next(next_dice)
    return dice
 

С помощью

 test_dice = make_test_dice(4, 1, 2)
test = [test_dice() for _ in range(5)]
 

вы получите

 [4, 1, 2, 4, 1]
 

Но: действительно ли это ваше первое назначение Python?

Комментарии:

1. Огромное спасибо за это! На прошлой неделе я решил несколько основных вопросов, но это часть первого серьезного задания, за которое я взялся. Это своего рода игра в кости.