![image](https://habrastorage.org/webt/yh/hy/8p/yhhy8pm7ozggdgkd3zkyeilrlis.jpeg)
курсах.
Подпрограммы
Объяснение
Подпрограммы представляют собой блоки кода, которые решают определенные задачи и могут вызываться в любой момент во время работы программы для выполнения этого кода.
Преимущества:
- Написанный вами блок кода может повторно использоваться в разных местах во время работы программы.
- Программа становится более понятной, так как код делится на блоки.
Определение подпрограмм и передач переменных между подпрограммами
Ниже приведена простая программа, которую можно было бы написать и без подпрограмм. Здесь подпрограммы используются исключительно в демонстрационных целях:
def get_name():
user_name = input("Enter your name: ")
return user_name
def print_Msg(user_name):
print("Hello", user_name)
def main():
user_name = get_name()
print_Msg(user_name)
main()
Программа состоит из трех подпрограм, имеющих названия get_name(), print_Msg() и main().
Подпрограмма get_name() предлагает пользователю ввести имя, а затем возвращает значение переменной user_name, чтобы оно могло использоваться в других подпрограммах. Это очень важно: если не вернуть значение из подпрограммы, то значения любых переменных, созданных или измененных в этой подпрограмме, нельзя будет использовать в других точках программы.
Подпрограмма print_Msg() выводит сообщение «Hello» и добавляет к нему имя пользователя. Переменная user_name заключена в скобки, так как текущее значение переменной импортируется в подпрограмму для последующего использования.
Подпрограмма main() получает значение user_name от подпрограммы get_name(), так как оно было возвращено подпрограммой get_name(). Затем переменная user_name используется в подпрограмме print_Msg().
Последняя строка main() — это сама программа. Все, что она делает, — это запуск подпрограммы main().
Разумеется, нет никакой необходимости так хитроумно запускать очень простую программу, но здесь этот пример приводится только для того, чтобы продемонстрировать структуру подпрограмм и механизм передачи и использования переменных в подпрограммах.
Будьте внимательны: Python не любит сюрпризы, так что если вы намереваетесь использовать подпрограмму в программе, Python должен заранее прочитать строку def имя_подпрограммы(), чтобы знать, где искать подпрограмму. Если вы попытаетесь вызвать подпрограмму до того, как Python получит информацию о ней, он впадет в панику и программа закроется. Вызываемая подпрограмма должна быть записана выше той части кода, которая используется для ее вызова. Python читает программы сверху вниз и выполняет первую строку, которая не имеет отступа и не начинается со слова def. В приведенной выше программе это будет строка main().
Помните: никогда не устраивайте сюрпризы для Python, потому что он этого не любит. Впрочем, это вообще полезный совет, и относится он не только к Python
Примеры кода
Все следующие примеры являются частью одной программы, поэтому они будут следовать в том
порядке, в котором приводятся ниже.
def get_data():
user_name = input("Enter your name: ")
user_age = int(input("Enter your age: "))
data_tuple = (user_name, user_age)
return data_tuple
Определяет подпрограмму с именем get_data(), которая запрашивает у пользователя его имя
и возраст. Так как мы хотим передать сразу несколько наборов данных из одной части основной
программы другим, их необходимо как-то сгруппировать. Команда return может содержать только одно значение; именно поэтому мы объединяем переменные user_name и user_age в кортеж (с. 63) с именем data_tuple.
def message(user_name, user_age):
if user_age <= 10:
print("Hi ", user_name)
else:
print("Hello ", user_name)
Определяет подпрограмму с именем message(), которая использует две ранее определенные
переменные (user_name и user_age).
def main():
user_name, user_age = get_data()
message(user_name, user_age)
Определяет подпрограмму main(), которая получает две переменные от подпрограммы get_data(). Имена переменных должны следовать в том порядке, в котором они определяются в кортеже. Затем вызывается подпрограмма message() для выполнения задачи с этими двумя
переменными.
main()
Запускает подпрограмму main().
Задачи
118
Определите подпрограмму, которая предлагает пользователю ввести число и сохраняет его в переменной num. Определите другую подпрограмму, которая использует значение num и проводит отсчет от 1 до этого числа.
119
Определите подпрограмму, которая предлагает пользователю выбрать большое и маленькое число, а затем генерирует случайное число из этого диапазона и сохраняет его в переменной с именем comp_num.
Определите другую подпрограмму, которая выводит сообщение «I am thinking of a number…», после чего предлагает пользователю угадать загаданное число.
Определите третью подпрограмму, которая проверяет, совпадает ли comp_num с предположением пользователя. Если совпадает, то подпрограмма выводит сообщение «Correct, you win»; в противном случае цикл продолжается, а подпрограмма сообщает, больше или
меньше их предположение загаданного числа, и предлагает сделать новую попытку до тех пор, пока пользователь его не угадает.
120
Отобразите для пользователя следующее меню:
1) Addition
2) Subtraction
Enter 1 or 2:
Если пользователь выбирает 1, запускается подпрограмма, генерирующая два случайных числа из диапазона между 5 и 20.
Предложите пользователю сложить их. Рассчитайте правильный ответ и выведите его для пользователя вместе с его ответом.
Если он выбирает 2, должна запускаться подпрограмма, генерирующая случайное число между 25 и 50, а затем еще одно между 1 и 25. Попросите пользователя вычесть второе из
первого: так ему не придется беспокоиться об отрицательных значениях. Выведите правильный ответ вместе с ответом пользователя.
Создайте еще одну подпрограмму, которая будет проверять совпадение ответа пользователя с правильным ответом. Если ответы совпали, выведите сообщение «Correct»; в противном случае
выведите «Incorrect, the answer is» и правильный ответ.
Если пользователь ввел некорректное значение в самом первом меню, выведите соответствующее сообщение.
121
Напишите программу, которая помогает пользователю легко управлять списком имен. Программа должна выводить меню, дающее возможность добавлять, изменять и удалять имена из списка, а также отображать их все. Кроме того, в меню должна присутствовать команда для завершения работы программы. Если пользователь выбрал несуществующую команду, программа выводит соответствующее сообщение. После того как пользователь выбрал команду добавления, изменения или удаления имени или просмотра всех имен, меню должно выводиться снова без необходимости перезапуска программы. Программа должна быть по возможности простой и удобной в использовании.
122
Создайте следующее меню:
1) Add to file
2) View all records
3) Quit program
Enter the number of your selection:
Если пользователь выбрал вариант 1, данные должны добавляться в файл Salaries.csv, содержащий имена и зарплаты.
Если пользователь выбрал вариант 2, программа выводит все записи из файла Salaries.csv. Если пользователь выбрал вариант 3, программа завершается. Если выбран несуществующий вариант, выводится сообщение об ошибке. Пользователь снова и снова возвращается к меню, пока не будет выбран вариант 3.
123
В языке Python невозможно напрямую удалить запись из файла .csv. Вместо этого приходится сохранять файл во временном списке, вносить в него изменения, а затем заменять
исходный файл временным списком.
Измените предыдущую программу, чтобы она предоставляла такую возможность. Меню должно выглядеть так:
1) Add to file
2) View all records
3) Delete a record
4) Quit program
Enter the number of your selection:
Об авторе
Никола Лейси (Nichola Lacey) — директор компании Nichola Wilkin Ltd., является авторитетным разработчиком учебных материалов, поставила тысячи курсов в образовательные учреждения по всему миру. Никола — один из самых популярных авторов TES (образовательный ресурс www.tes.com/international), а ее материалы набирают высокий рейтинг просмотров и сотни тысяч загрузок. Она была программистом до перехода в сферу корпоративного обучения и последующей переподготовки на должность преподавателя, а после повышения до уровня руководителя компьютерного направления в частной школе для мальчиков приобрела уникальные навыки из области программирования и практики преподавания.
Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок
Для Хаброжителей скидка 25% по купону — Python
По факту оплаты бумажной версии книги на e-mail высылается электронная книга.