Урок 1.3. Функции в языке Python
На этом уроке вы узнаете, что такое функция, и научитесь использовать ее для вычисления выражений. Вы также поймете важность структурирования в программировании на языке Python и преимущества встроенных подсказок в редакторе Editor.
Чему научитесь
- Определять функцию
- Использовать функцию в вычислениях выражений
- Использовать функцию input()
Функции играют важную роль не только в математике, но и в программировании на языке Python. Они используются для генерирования различных значений, а также могут служить в качестве подпрограмм Python, которые помогают разбивать сложный вычислительный процесс на более короткие фрагменты, которые проще вычислить.
Программа, которая является пошаговой инструкцией решения задач, называется алгоритмом. По сути, все программы являются алгоритмами.
1. Давайте создадим программу, которая позволит пользователю вводить число для "х", после чего программа будет использовать это значение для вычисления функции f(x)=x2 + 3x - 1.
Во-первых, определите функцию, выполнив следующие шаги: menu > Built-ins > Function > def function(). На экране появятся шаблон функции. Встроенные подсказки (inline prompts) покажут вам, области функции (function), аргумента (argument) и блока (block) для редактирования. Здесь нужно ввести свой код.
Примечание для учителя: встроенные подсказки это специально созданная функция для редактора Editor. Они помогают новичкам правильно выстраивать структуру кода. Кроме того, если активировать встроенные подсказки при работе с некоторыми функциями, пользователь также может видеть всплывающие подсказки (например, в виде допустимого диапазона значений).
2. Обратите внимание на то, что сейчас выделена область function (функция). Ее нужно заменить буквой f, нажав на кнопку f. Область argument (аргумент) нужно сменить на х с помощью кнопки tab. Повторное нажатие на tab позволит редактировать область block (блок):
return x**2 + 3*x - 1
Функцию return можно активировать в следующих пунктах меню: menu > Built-ins > Function.
Формат x**2 является типичной записью на языке Python для выражений типа x2 или x*x,и вы должны вводить3*x, а не 3x.
Обратите внимание на то, что перед областью "блок" находятся два пробела. Светло-серые ромбы являются их символами-заменителями, чтобы пользователю было проще следить за структурированием в более сложных программах, потому что на языке Python структурирование имеет большое значение.
С определением функции мы разобрались. Если сейчас запустить эту программу, данное определение функции не будет вычислено сразу, но приложение Shell будет "иметь в виду", что оно существует.
Примечание для учителя: Структурирование в языке Python - это способ определения структур блока. Оно существенно облегчает кодирование (например, не нужны специальные буквы или ключевые слова в качестве символов-разграничителей блока такие как begin...end или { }, или For...EndFor). Отступ в редакторе обычно бывает в виде двух пробелов, но этот показатель можно изменить
Функция определяется (def), но не вычисляется, пока пользователь не вызовет ее из главной программы, что мы будем рассматривать далее.
Строка return используется в конце функции для того, чтобы отослать значение обратно к оператору обращения.
3. Используйте выражение input(), чтобы разрешить пользователю ввести число для х.
С помощью кнопки возврата del вернитесь к началу новой пустой строки и напишите следующее:
x=input("Enter a value for x: ")
Используйте кнопку [=] на клавиатуре.
Чтобы активировать строку input(), выберите следующие пункты меню: menu > Built-ins > I/O (или просто впишите вручную).
Вы можете использовать как одиночные кавычки (их можно найти среди кнопок пунктуации), так и двойные (ctrl+x, где х это знак умножения).
Текст, выделенный зеленым цветом, вводится символ за символом с помощью клавиатуры.
Знак двоеточия [:] находится среди кнопок пунктуации на клавиатуре. Этот знак не обязателен, но с ним все выглядит немного лучше.
Примечание для учителя: Многие клавиши в редакторе имеют несколько функций. Так кнопка [sto>] (ctrl+var) также является знаком "=". Кнопка [pi] вводит Пи. Ctrl+= дает доступ к операторам сравнения в языке Python, в отличие от языка TI-Nspire. Также обратите внимание на изменение знака ≠ на !=.
В других случаях в языке Python знак двоеточия (:) имеет специальное значение, например, в работе с выражениями типа оператора цикла с условием, оператора цикла FOR и условного оператора.
Примечание: Данное выражение будет модифицировано, потому что функция input() выдает строку, а не число. Будьте внимательны. Пример дан для того, чтобы показать, как выглядит сообщение об ошибке при запуске программы.
4. На следующей строке запишите выражение print():
print("f(x) equals " , f(x))
Не забудьте, что функцию print() можно найти в меню: menu > Built-ins > I/O.
Символы f(x) внутри кавычек будут отображены как f(x), но если они расположены после запятой, это будет считаться вызовом функции, и они будут заменены на значение, которое имеет функция.
5. Нажмите ctrl+R, чтобы запустить программу. В области подсказки введите число для х и нажмите enter.
6. Теперь вы впервые (возможно) увидели сообщение об ошибке при запуске программы. Сообщение длинное, но самая важная информация содержится в последних двух строках. Обратите внимание на номер последней строки и тип ошибки TypeError: "can't convert...".
Произошла ошибка, потому что функция input() выдает строку, а не числовое значение. Программист (то есть вы) должен преобразовать строку в числовое значение.
В языке Python существуют 5 простых типов данных: int (integer/целое число), str (string/строка), float (десятичная дробь), complex (комплексное число) и bool (Логическое значение - Верно/Неверно).
7. Исправьте ошибку: В языке Python существуют несколько встроенных функций конвертирования. Все их можно найти в меню: menu > Built-ins > Type.
Эти функции - int(), float(), str() и complex().
8. Чтобы конвертировать строку х в число, используйте функцию
x=float(x)
или
x=int(x)
Они должны располагаться до выражения print. Попробуйте использовать обе функции и увидите разницу.
В данном примере мы выбрали функцию float(). Почему?
Примечание для учителя: Почему используется именно функция float()? Чтобы пользователь имел возможность вводить десятичные значения.
9. Снова запустите программу. Теперь она отлично работает.
10. Задача: Как нужно изменить код, чтобы значение х отображалось внутри скобок с функцией (вместо буквы х). Например, чтобы это выглядело вот так:
f(4.0) equals 27.0
Примечание для учителя:
В приложении Shell (после нажатия ctrl+R) вы можете использовать функцию "ручного ввода" (manually). Для этого просто введите "f(<число>) enter", чтобы вычислить f(x), где x=<число>.
В сообщении об ошибке при запуске программы содержится много информации, чтобы при работе со сложными проектами программист мог установить источник ошибки, ведь она может находиться в любом из многих файлов, входящих в состав проекта Python.
Такое сообщение об ошибке ("невозможно конвертировать str в int") звучит немного странно, но в языке Python существует возможность многократного отображения строки: ввод 3*'dog' выдаст строку "'dogdogdog'". Преобразователь игнорирует случаи, когда используются сложение, вычитание или деление:
Функцию x=float(x) можно объединить с функцией ввода: x=float(input("message")). Но такие тонкости могут быть сложны для понимания новичков, как и при изучении композиции функций (см. "Практическое применение" к данному уроку).
На последнем экране отображается десятичный разделитель (f(x) equals 27.0), потому что мы использовали функцию float(). Еще один вариант - это функция x=int(x), с помощью которой можно конвертировать "х" в целое число, но если ввести десятичное число, то его разряды будут отброшены.
Другие три функции конвертирования - это complex(), str() и bool().
Кроме того, в языке Python есть функция type(), которая возвращает тип переменной:
x=5
print(type(x))
В строке print вы можете комбинировать буквенные строки и числовые переменные, но они разделяются запятыми:
Ответ на задачу: print('f(', x, ') equals ', f(x))