Форум сайта python.su
citizen404пробовал переводить? файл не найден.
FileNotFoundError: No such file or directory:
Офлайн
Здравствуйте!
Изучаю Пайтон, не могу понять замыкания. Пример:
def make_adder(x): def adder(n): return x + n #захват переменной "x" из внешнего контекста return adder f = make_adder(10) print f(5) # 15 print f(-1) # 9
Отредактировано Myriam (Июль 20, 2017 21:44:41)
Офлайн
MyriamВ питоне всё есть объект, даже функция, даже класс. Вероятно, значения захваченные из контекста сохраняются в виде атрибутов объекта.
Куда сохраняет и в виде чего?
Myriam
Какое значение пойдет в качестве аргумента функции adder? То, которое в скобках при вызове функции f(5), f(-1)? Или 10?
MyriamЛюбые синтаксические конструкции решают одну задачу - уменьшение сложности алгоритмирования. Типичное применение замыканий в питоне - декораторы.
Какое применение у замыканий? Какие задачи они решают?
Офлайн
FishHookПодскажите,пожалуйста,а на вашей на практике декораторы вложенные друг в друга часто встречались?
Типичное применение замыканий в питоне - декораторы.
Отредактировано ispylnev (Июль 21, 2017 16:19:17)
Офлайн
Выполняла задачу:
Написать реализацию вычисления числа Фибоначчи через рекурсию с подсчетом количества произведенных вызовов функции. Подсчет количества вызовов функции реализовать через замыкание.
FishHook
i = int(input('Введите количество сумм'))
def Fibonacci(n):
count = n
def Fib(m):
k = 0
nonlocal count
count+=1
if m > 2:
k = Fib(m - 1) + Fib(m - 2)
else:
k = 1
return k
print(count)
return Fib
F = Fibonacci(0)
print(F(i))
Офлайн
Myriam
не производится подсчет количества вызовов функции?
def Fibonacci(n): count = n def Fib(m): k = 0 nonlocal count count+=1 if m > 2: k = Fib(m - 1) + Fib(m - 2) else: k = 1 Fib.count = count return k print(count) return Fib F = Fibonacci(0) F(3) F.count # 3
Офлайн
Доброго дня.
Только начинаю знакомство с Python.
При запуске - ошибка “invalid syntax” и подсвечивает “while”. Не могу понять в чем проблема, помогите, пожалуйста, разобраться (код ниже). Что не было учтено?
Как я понимаю алгоритм программы:
- задали отчет попыток отгадывания/ задали число
- цикл будет выполняться и мы его прервем, при условии, что заданное число будет совпадать со случайно выбранным из (1, 100)
- напечатаем результаты
- выйдем из игры
#игрок загадывает натуральное число от 1 до 100, а компьютер отгадывает import random c = 1 #кол-во попыток компьютера отгадать число a = int (input('Загадай число: ') #число загаданное пользователем while True: d = random.randint(1, 100) #варианты ответа от компьютера c += 1 if a == d: print('Компьютур угадал c', c, 'попытки! Правильный ответ', d) break input ('\n\nНажмите Enter, чтобы выйти')
Отредактировано Daler_68 (Июль 24, 2017 10:40:14)
Офлайн
Daler_68
[code python][/code]
Офлайн
a = int (input('Загадай число: ')
Офлайн
FishHookСпасибо! Осознал, исправился, переписал!скобку кто будет закрывать?a = int (input('Загадай число: ')
Отредактировано Daler_68 (Июль 24, 2017 10:57:26)
Офлайн