В домашнем задание мы написали функцию которая получает 2 числа и печатает их сумму.
def my_sum(num1, num2):
sum = num1 + num2
print sum
Теперь мы хотим не распечатать сумму, а вернуть ее, как ответ на запрос.
Вспомним базовые встроенные системные функции которыми мы уже воспользовались:
size = raw_input("Ukazhite razmer kvadrata")
raw_input - функция которая получает переменную - строку - "Ukazhite razmer kvadrata", показывает ее на экране, принимает от пользователя данные и передает в наше пользования. Мы же ее записываем в переменную size.
num = int(size)
int - функция которая получает переменную типа текст, превращает ее в число, и возвращает в наше пользование. Мы же ее записываем в переменную num.
Итого, для того чтобы получить данные из функции, нам надо:
1. Не просто выполнить функцию, а присвоить ее (точнее ее результат) переменной.
2. В теле функции, сообщить что нам надо не просто распечатать результат, а вернуть его. Для этого мы используем новое ключевое слово - return.
Теперь наша функция суммы, выглядит так:
def my_sum(num1, num2):
sum = num1 + num2
return (num1 + num2)
А вызов и использование функции в теле кода будет выглядеть так:sum = my_sum(5,3) print sum
Вопросы радиослушателей:
Дорогой Джипа,
Я пишу самую великую программу в мире. У меня пока 854 строчки кода и ни одна не повторяется! Правда мне не нужны функции?
Целую, Нубас Подгорелов.
Ответ:
Вы забыли что функции нужны не только когда код повторяется, но и для более правильной разбивки и структуризации кода. Если у вас есть где-то вычисления, вынесите их в отдельную функцию. Если у вас есть вывод на экран, вынесите его в отдельную функцию. Ваша главная часть программы, должна выглядеть как оглавление книжки - список глав. Каждая из функций - как отдельная глава - может, и иногда должна вызывать свои под-функции.
Вопрос:
Дорогой Джипа,
Что считается большой функцией? Как понять что я создал монстра? Есть ли какие-то принятые в народе индикаторы?
Целую, Нубас Пригорелов.
Ответ:
Я придерживаюсь довольно простого правила - функция должна целиком помещаться на экране. На нее удобно смотреть. Это плюс минус 40 строк кода. Разумеется не стоит вешаться если у вас в функции 60 строк, но как приблизительная индикация, это вполне хорошее правило.
Домашнее задание:
1. Напишите программу которая получает от пользователя оценки по 3 экзаменам и печатает среднюю оценку. Используйте функцию для подсчета и возврата средней оценки.
2. Напишите программу которая получает от пользователя 2 числа (num1, num2) и печатает число num1 в степени num2. Используйте функцию для подсчета и возврата числа.
3. Перепишите функцию из п.2 не используя символ возвода в степень.
Подсказка (для того чтобы показать нажмите ctrl+a): используйте цикл.