Создание функций, добавление аргумента в диапазон

1

Я новичок в программировании (просто узнал, что такое командная строка); нет предыдущего опыта и просто нашел этот сайт, чтобы оправдать любые ошибки форматирования.

Я действительно борюсь с добавлением аргументов функции. В частности, мне нужно добавить аргумент к функции, которую я создал, в которой я возвращаю диапазон с шагом 5. По причинам, которые выше моего текущего уровня квалификации (но очевидно, что вы, ребята, я уверен), я не могу использовать основная функция, чтобы заменить 51 в моей функции fname на 101. По сути, я должен дать fname аргумент для верхнего конца диапазона. Из основной функции я должен передать значение 101 функции fname, чтобы fname возвращал [0, 5, 10,..., 100] к основной функции, а основная функция печатала это на экране.

def fname(arg1):
    """this function will compute a range from 0 to 50 in increments of 5"""
    result = list(range(0, 51, 5))
    return result


def main():
    arg1 = list(range(0, 101, 5))
    from_fname_function = fname(arg1)
    print(from_fname_function)

if __name__ == '__main__':
    main()

Любая помощь (с подробным объяснением) была бы весьма признательна. Я нашел много ресурсов, как использовать аргументы в функции, но я не могу понять, как изменить максимальный предел в диапазоне таким образом.

  • 1
    Почему бы просто не передать 101 в fname(arg1) и изменить 51 в arg1 ?
  • 0
    StackOverflow не является ресурсом по кодированию или обучению. Пожалуйста, проработайте руководства по соответствующим темам; напишите снова, когда ваш вопрос более сфокусирован.
Показать ещё 1 комментарий
Теги:
python-3.x
function
arguments
range

3 ответа

2
Лучший ответ

Обратите внимание, что вы не используете аргумент, добавленный в тело функции. Судя по докшрингу, я предполагаю, что вы хотите сделать верхнюю границу диапазона гибкой. Попробуйте выполнить следующие строки:

def fname(arg1):
    # actually use the argument to build the range
    result = list(range(0, arg1, 5))  
    return result

def main():
    arg1 = 101
    from_fname_function = fname(arg1)
    print(from_fname_function)
  • 0
    Большое спасибо. Когда я заменил ваше предложение, но сохранил оператор if / main внизу, он выдал ошибку, в которой упоминалось что-то о «максимальной глубине рекурсии» (жаль, что я не скопировал бы все сообщение об ошибке; я не могу заставить его повториться). Мне сказали, что оператор if / main помогает вызывать / импортировать функцию без ее автоматического запуска. Почему тогда if / main вызывает повторение вывода? (Не оригинальный вопрос, и если нужно, чтобы задать его в другом месте, я прошу прощения).
  • 0
    То, что вам сказали, правильно =) Из приведенного кода это также не связано с ошибкой, поскольку она имеет мало общего с рекурсией. Нужно было бы увидеть полный код того, что вызвало ошибку, чтобы сказать больше.
0
def fname(start, end, inc):
    return list(range(start, end, inc))

print(fname(0,51,5))

В приведенном выше коде функция fname возвращает список значений от "start" до "end" с приращением "inc"

op: [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

0

Я думаю, что трюк, который вы ищете, состоит в том, чтобы функция fname могла возвращать списки, начинающиеся с нуля, и с шагом в 5, вплоть до любого выбранного вами предела. Вы действительно близки; вам просто нужно использовать параметр arg1 когда вы делаете диапазон, например:

def fname(arg):
    return list(range(0, arg, 5))

Теперь вы можете использовать эту функцию для создания множества списков:

def main():
    print(fname(51))      # this will print [0, 5, 10, ..., 50]
    print(fname(101))     # this will print [0, 5, 10, ..., 100]
    print(fname(10))      # this will print [0, 5]

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

Надеюсь, это поможет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню