Использование range () внутри функции в Python - PullRequest
0 голосов
/ 16 апреля 2020

Я создаю функцию, которая должна возвращать список каждого третьего числа от start до 100 (включительно). Например, every_three_nums (91) должен возвращать список [91, 94, 97, 100]. Сначала я попробовал следующее:

def every_three_nums(start):
  list = []
  a = 0
  if start > 100:
    return list
  else:
    a = range(start, 101, 3)
    print(list(a))    

print(every_three_nums(91))

И я получил TypeError: объект списка не вызывается.

То же самое происходит, если я использую

print(list(range(91, 101, 3)))

в рамках функции. Несмотря на это работает вне функции.

Я не совсем понимаю обоснование. Не могли бы вы помочь мне с этим?

В конце концов, я решил:

def every_three_nums(start):
  list = []
  a = 0
  if start > 100:
    return list
  else:
    for i in range(start, 101, 3):
      list.append(i)
    return list

print(every_three_nums(91))

1 Ответ

1 голос
/ 16 апреля 2020

Вы переопределяете функцию list для экземпляра списка внутри функции с помощью list = []. Поэтому, когда вы вызываете list(a), вы рассматриваете список object как функцию. Переименуйте эту переменную, и она должна работать.

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