Главная страница

книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python


Скачать 2.24 Mb.
НазваниеСборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Анкоркнига заданий пайтон
Дата02.10.2022
Размер2.24 Mb.
Формат файлаdocx
Имя файлакнига практических заданий, pyton.docx
ТипСборник упражнений
#709959
страница22 из 69
1   ...   18   19   20   21   22   23   24   25   ...   69

4.2. переменные в функцияХ


Переменные, объявляемые внутри функции, называются локальными (local). Это означает, что область действия этих переменных ограничивается данной функцией, и к ним можно обратиться только в теле этой функции. После завершения работы функции локальные переменные очищаются из памяти, а значит, и обратиться к ним больше не получится. В функции drawBox задействовано сразу несколько локальных переменных. В их число входят и переменные параметров вроде width и fill, и даже внутренняя переменная i из цикла for внутри функции. Ко всем этим переменным можно обращаться только внутри тела функции. Переменные, создаваемые и инициализируемые внутри функции при помощи оператора присваивания, также классифицируются как локальные.

4.3. возвращаемые значения


Наша функция выводит прямоугольник на экран. И хотя она принимает на вход целых четыре аргумента, никаких вычислений, результат которых стоило бы сохранить в переменной и использовать позже, внутри функции не производится. Но многие функции пишутся именно для этого. Например, функция sqrt из модуля math вычисляет квадратный корень из переданного в нее аргумента и возвращает его для дальнейшего использования. Так же точно функция input считывает ввод с клавиатуры и возвращает введенное значение для дальнейшей его обработки. Многие функции, которые вы будете писать сами, тоже будут возвращать значения.

Для возврата значения из функции существует ключевое слово return, после которого идет само значение. Дойдя до инструкции с return, функция мгновенно прекращает свое выполнение, и управление передается инструкции, следующей сразу за вызовом функции. Например, следующее выражение прекращает выполнение функции, возвращая при этом значение 5.

return 5

Функции, возвращающие значение, обычно появляются в выражениях справа от оператора присваивания, но могут быть вызваны и в других контекстах, когда необходимо получить рассчитанное значение. Например, подобные функции могут быть частью условного выражения if или цикла while, а также подаваться на вход других функций, таких как print или range.

В функциях, не предназначенных для возвращения результата, совсем не обязательно использовать ключевое слово return, поскольку возврат в основную программу автоматически произойдет после выполнения последней инструкции в теле функции. Но программист вправе использовать слово return без следующего за ним значения для преждевременного выхода из функции. Кроме того, в любой функции, вне зависимости от того, возвращает она значение или нет, ключевое слово return может появляться множество раз. Выход из подобной функции произойдет по достижении первого из этих слов.

Рассмотрим еще один пример. Геометрическая прогрессия представляет собой последовательность чисел, начинающуюся с числа a и продолжающуюся до бесконечности. При этом каждый следующий член последовательности, за исключением первого, получается путем умножения предыдущего на r, называемое знаменателем прогрессии. В результате прогрессию можно выразить как последовательность a, ar, ar2, ar3, … . При r, равном единице, сумма первых n элементов геометрической прогрессии составит a×n. В противном случае сумму первых n элементов можно вычислить по следующей формуле:



Несложно написать функцию на языке Python, вычисляющую эту сумму для любой геометрической прогрессии при известном n. Функция будет принимать на вход три параметра – a, r и n – и возвращать сумму первых n элементов последовательности. Код функции показан ниже.

## Вычислить сумму первых n элементов геометрической прогрессии

# @param a – первый элемент последовательности

# @param r – знаменатель последовательности # @param n – количество элементов, сумму которых необходимо получить # @return s – сумма первых n элементов def sumGeometric(a, r, n):

# Вычисляем и возвращаем сумму первых n элементов при r, равном 1 if r == 1:

return a * n # Вычисляем и возвращаем сумму первых n элементов при r, не равном 1 s = a * (1 – r ** n) / (1 – r) return s

Функция начинается с использования условной конструкции if для определения того, равняется ли r единице. Если это так, сумму первых n элементов можно вычислить по простой формуле a * n, после чего вернуть результат вызывающей программе, не выполняя оставшийся код функции. Если значение переменной r не равно единице, тело условного выражения пропускается, а вместо него в переменную s помещается результат подсчета нужной нам суммы по формуле, описанной выше. После этого результат возвращается в виде переменной s, и выполнение функции на этом заканчивается.

В следующей программе мы рассмотрим пример использования нашей функции sumGeometric для вычисления суммы первых n элементов геометрической прогрессии, пока пользователь не введет для переменной a нулевое значение. Каждое значение суммы рассчитывается отдельно, возвращается и присваивается переменной с именем total. Полученная сумма выводится на экран, после чего происходит следующий запрос пользователю.

def main(): # Запрашиваем значение переменной a для первой последовательности init = float(input("Введите значение переменной a (0 для выхода): "))

# Пока вводимое значение не равно нулю while init != 0: # Запрашиваем знаменатель и количество элементов ratio = float(input("Введите знаменатель последовательности, r: ")) num = int(input("Введите количество элементов, n: ")) # Вычисляем и отображаем результат total = sumGeometric(init, ratio, num) print("Сумма первых", num, "элементов равна", total) # Запрашиваем значение переменной a для следующей последовательности init = float(input("Введите значение переменной a (0 для выхода): "))

# Вызываем основную функцию main()
1   ...   18   19   20   21   22   23   24   25   ...   69


написать администратору сайта