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

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


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

4.1. функции с параметрами


Функция drawBox работает отменно. При вызове она исправно выводит на экран прямоугольник, что от нее и требуется. Но вы не находите, что наша функция обладает недостаточной гибкостью, а значит, и пользы от нее не так много? Было бы интереснее, если бы у нас была возможность выводить на экран прямоугольники разной формы.

Для большей гибкости функции могут принимать аргументы (argument) посредством передачи им значений в круглых скобках. На входе в функцию значениями этих аргументов инициализируются переменные параметров (parameter variables), прописанные в круглых скобках при объявлении функции. Количество параметров, прописанное при объявлении функции, определяет число аргументов, которые должны быть переданы при вызове функции.

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

## Рисуем прямоугольник из звездочек, заполненный пробелами

# @param width – ширина прямоугольника # @param height – высота прямоугольника def drawBox(width, height): # Слишком маленькие прямоугольники не могут быть нарисованы при помощи этой функции if width < 2 or height < 2:

print("Ошибка: ширина или высота прямоугольника слишком малы.") quit()

# Рисуем верхнюю линию прямоугольника print("*" * width)

# Рисуем стороны прямоугольника for i in range(height – 2): print("*" + " " * (width – 2) + "*")

# Рисуем нижнюю линию прямоугольника print("*" * width)

Теперь при вызове функции drawBox ей должны быть переданы два аргумента, обозначенные в виде параметров при ее объявлении. В момент вызова функции значение первого аргумента будет записано в переменную первого параметра (width), а значение второго – в переменную второго параметра (height). К примеру, следующий вызов функции приведет к отображению прямоугольника шириной 15 единиц и высотой четыре единицы. Чтобы нарисовать прямоугольник с другими характеристиками, нужно вызвать нашу функцию еще раз и передать в нее уже другие аргументы.

drawBox(15, 4)

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

## Рисуем прямоугольник

# @param width – ширина прямоугольника

# @param height – высота прямоугольника

# @param outline – символ для рисования сторон прямоугольника # @param fill – символ для заливки прямоугольника def drawBox(width, height, outline, fill): # Слишком маленькие прямоугольники не могут быть нарисованы при помощи этой функции if width < 2 or height < 2:

print("Ошибка: ширина или высота прямоугольника слишком малы.") quit()

# Рисуем верхнюю линию прямоугольника print(outline * width)

# Рисуем стороны прямоугольника for i in range(height – 2): print(outline + fill * (width – 2) + outline)

# Рисуем нижнюю линию прямоугольника print(outline * width)

# Демонстрируем работу обновленной функции drawBox(14, 5, "@", ".")

При вызове новой версии функции drawBox программист обязательно должен передавать третий и четвертый параметры в дополнение к первым двум. Это может быть приемлемо, если значения параметров постоянно меняются, но если, к примеру, звездочка и пробел используются в большинстве случаев для рисования прямоугольников, можно применить иной подход, добавив к некоторым параметрам функции значения по умолчанию (default value) при ее объявлении. Для этого используется оператор присваивания, как показано в примере ниже.

def drawBox(width, height, outline="*", fill=" "):

В таком виде функция drawBox может вызываться с двумя, тремя или четырьмя аргументами. В первом случае значения первого и второго переданных аргументов будут присвоены переменным ширины и высоты будущего прямоугольника, тогда как переменным outline и fill будут присвоены значения по умолчанию, а именно звездочка и пробел соответственно. Переменные параметров получают значения по умолчанию только тогда, когда для них не переданы соответствующие аргументы при вызове функции.

Теперь давайте рассмотрим следующий вызов функции.

drawBox(14, 5, "@", ".")

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

@@@@@@@@@@@@@@

@............@

@............@

@............@

@@@@@@@@@@@@@@
1   ...   17   18   19   20   21   22   23   24   ...   69


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