Смущает аргументация, переходящая в Python - PullRequest
0 голосов
/ 10 октября 2019

У меня есть функция, которая требует передачи трех аргументов. Первый аргумент является фиксированным значением, второй аргумент является диапазоном, который позже используется циклом for в коде. Третий аргумент - это диапазон / список значений. Я хочу, чтобы для каждого значения во втором аргументном диапазоне бралось одно соответствующее значение из третьего аргумента. например, я хочу, чтобы, когда значение второго аргумента было 10, третий аргумент должен быть 1. Когда значение второго аргумента равно 19, третий аргумент должен быть 2. Аналогично, когда значение второго аргумента равно 28, третий аргумент должен быть 3. и так далее ... Другими словами, я могу выразить это так: каждый раз, когда циклы «for» выполняются для каждого значения «n», должно быть уникальное и постоянно увеличивающееся значение «f». Заранее спасибо.

def runFunct(funct):
    itrange = funct[0]
    nrange = funct[1]
    frange = funct[2]


    for f in frange:
        for n in nrange:
            print(f*n)
            ....
funct1 = [1, range(10,101,9), ?????]     
runFunct(funct3)

1 Ответ

0 голосов
/ 11 октября 2019

Похоже, что ваша функция запускается только в том случае, если ваши 2-й и 3-й аргументы связаны определенным образом.

Таким образом, есть 2 возможности:

  1. Сохранить 3-аргументную функциюи добавьте фазу проверки в начале функции, например:
def myFunction(i, nrange, frange):
    # Check property
    for n in nrange:
        if not <your relation between n and f>:
            raise ValueError("The relation between nrange and frange is not good")

    # Do what your function must do
Как сказал Алекс в комментариях: если ваш 3-й аргумент может быть вычислен с помощью 2-го аргумента, просто передайте 2 аргумента вашей функции и вычислите третий, например:
def myFunction(i, nrange):
    # Compute frange
    frange = <Way to compute frange from nrange>

    # Do what your function must do
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...