Функции
Хранимые (и повторно используемые) шаги
Функции в Python
Определение функции
Функция Max()
Функция Max()
Преобразование типов
Преобразование строк
Создание собственных функций…
Создание собственных функций
Определение и использование функции
Аргументы
Параметры
Возвращаемое значение
Возвращаемое значение
Аргументы, Параметры и Результаты
Множественные Параметры / Аргументы
Пустые (неплодотворные) функции
Создавать или не создавать функцию...
119.90K
Категория: ПрограммированиеПрограммирование

Lecture06_Python_Functions

1. Функции

2. Хранимые (и повторно используемые) шаги

def
thing():
print('Привет’)
print('Здорово')
thing()
print('Вжик!')
thing()
Программа:
def thing():
print('Привет’)
print('Здорово')
thing()
print('Вжик!')
thing()
Результат:
Привет
Здорово
Вжик!
Привет
Здорово
Мы называем эти повторно используемые части «функциями»

3. Функции в Python

• В Python два вида функций:
- Встроенные функции, поставляемые как часть языка:
print(), input(), type(), float(), int() ...;
- Функции, которые мы создаем сами и затем используем.
• Стоит воспринимать имена встроенных функций, как
«новые» ключевые слова (не используйте их в качестве
имен для переменных)

4. Определение функции

• Функция в Python — это блок повторно используемого кода,
который принимает аргумент(ы) в качестве входных данных,
производит вычисления и затем возвращает результат(ы)
• Мы создаем функцию, используя ключевое слово def
• Мы вызываем функцию, используя имя функции, круглые
скобки и аргументы в выражении
D-R-Y Don’t Repeat Yourself

5.

Аргумент
big = max('Hello world')
Присвоение
'w'
Результат
>>> big = max('Hello world')
>>> print(big)
w
>>> tiny = min('Hello world')
>>> print(tiny)
>>>

6. Функция Max()

>>> big = max('Hello world')
>>> print(big)
w
'Hello world'
(строка)
max()
функция
Функция — это некий
сохраненный код, который
мы используем. Функция
получает набор входных
данных и возвращает
результат
'w'
(строка)

7. Функция Max()

>>> big = max('Hello world')
>>> print(big)
w
'Hello world'
(строка)
Функция — это некий
сохраненный код, который
мы используем. Функция
получает набор входных
данных и возвращает
результат
def max(inp):
blah
blah
for x in inp:
blah
blah
'w'
(строка)

8. Преобразование типов

• Когда вы помещаете в
выражение целое число и
число с плавающей
точкой, целое число
преобразуется в число с
плавающей точкой
• Вы можете устанавливать
и изменять тип при
помощи встроенных
функций int() и float()
>>> print(float(99) / 100)
0.99
>>> i = 42
>>> type(i)
<class 'int'>
>>> f = float(i)
>>> print(f)
42.0
>>> type(f)
<class 'float'>
>>> print(1 + 2 * float(3) / 4 – 5)
-2.5
>>>

9. Преобразование строк

• Вы можете
использовать функции
int() и float() для
преобразований между
строками и числами
• В случае, если строка
не содержит числовых
символов, вы получите
сообщение об ошибке
>>> sval = '123'
>>> type(sval)
<class 'str'>
>>> print(sval + 1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str'
and 'int'
>>> ival = int(sval)
>>> type(ival)
<class 'int'>
>>> print(ival + 1)
124
>>> nsv = 'hello bob'
>>> niv = int(nsv)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int()

10. Создание собственных функций…

11. Создание собственных функций

• Чтобы создать новую функцию, используется ключевое
слово def, за которым в скобках следуют параметры, если
необходимо.
• Тело функции требует отступа
• Следующая запись определяет функцию, но не выполняет
команды, содержащиеся в ней:
def print_lyrics():
print("Я лесоруб и все пучком.")
print('Сплю ночью и работаю днем.')

12.

print_lyrics():
print("Я лесоруб и все пучком.")
print('Сплю ночью и работаю днем.')
x = 5
print('Привет')
def print_lyrics():
print("Я лесоруб и все пучком.")
print('Сплю ночью и работаю днем.')
print('Эй!')
x = x + 2
print(x)
Привет
Эй!
7

13. Определение и использование функции

• Как только мы определили/создали функцию, можем
вызывать ее столько раз, сколько потребуется
• Это называется хранением и повторным использованием

14.

x = 5
print('Привет')
def print_lyrics():
print("Я лесоруб и все пучком.")
print('Сплю ночью и работаю днем.')
print('Эй!')
print_lyrics()
x = x + 2
print(x)
Привет
Эй!
Я лесоруб и все пучком.
Сплю ночью и работаю днем.
7

15. Аргументы

• Аргумент — это значение, которое мы передаем функции в момент
вызова в качестве входных данных
• Мы используем аргументы, чтобы при различных вызовах функция
могла выполнить разные расчеты
• Аргументы помещаем внутрь скобок после имени функции
big = max('Привет, мир!')
Аргумент

16. Параметры

Параметр — это переменная,
которую мы используем
внутри определения функции.
Это “дескриптор”, который
позволяет коду внутри
функции обращаться к
аргументам при вызове
функции.
>>> def greet(lang):
...
if lang == 'es':
...
print('Hola')
...
elif lang == 'fr':
...
print('Bonjour')
...
else:
...
print('Hello')
...
>>> greet('en')
Hello
>>> greet('es')
Hola
>>> greet('fr')
Bonjour
>>>

17. Возвращаемое значение

Функция принимает свои аргументы, производит некоторые
вычисления и возвращает значение, которое будет
использоваться в качестве значения вызова функции в
вызывающем выражении. Для этого используется ключевое
слово return.
def greet():
return "Привет, "
print(greet(), "Аня")
print(greet(), "Михаил")
Привет, Аня
Привет, Михаил

18. Возвращаемое значение

• «Плодотворная» функция
дает результат (или
возвращает значение)
• Оператор return
завершает выполнение
функции и возвращает
“назад” результат
выполнения функции
>>> def greet(lang):
...
if lang == 'es':
...
return 'Hola'
...
elif lang == 'fr':
...
return 'Bonjour'
...
else:
...
return 'Hello'
...
>>> print(greet('en'),'Glenn')
Hello Glenn
>>> print(greet('es'),'Sally')
Hola Sally
>>> print(greet('fr'),'Michael')
Bonjour Michael
>>>

19. Аргументы, Параметры и Результаты

Параметр
>>> big = max('Hello world')
>>> print(big)
w
'Hello world'
Аргумент
def max(inp):
blah
blah
for x in inp:
blah
blah
return 'w'
'w'
Результат

20. Множественные Параметры / Аргументы

• Мы можем указать больше
одного параметра в
определении функции
• Мы запросто можем добавить
больше аргументов при вызове
функции
• Мы сопоставляем количество и
порядок аргументов и
параметров
def addtwo(a, b):
added = a + b
return added
x = addtwo(3, 5)
print(x)
8

21. Пустые (неплодотворные) функции

• Если функция не возвращает значение, мы называем ее
«пустой» функцией
• Функции, которые возвращают значение, называются
«плодотворными»
• «Пустые» функции не являются «плодотворными»

22. Создавать или не создавать функцию...

• Организуйте свой код в виде “блоков”: зафиксируйте мысль и
дайте ей название
• Не повторяйтесь. Создайте функцию единожды, а затем повторно
используйте по необходимости.
• Если код начинает быть длинным или слишком сложным,
разбейте его на логические фрагменты и поместите их в функции
• Создайте библиотеку часто используемого кода. Возможно, вы
захотите поделиться ей с друзьями…

23.

Задание. Проверить номер банковской карты на действительность и
определить тип карты (Visa, Master Card, American Express)
Условие 1:
Номера карт American Express начинаются с 34 или 37
Номера карт MasterCard начинаются с 51,52,53,54 или 55
Номера карт Visa начинаются с 4
Условие 2:
Карты American Express имеют 15-значный номер,
MasterCard – 16-значный номер,
Visa – 13- и 16-значные номера.
Условие 3:
Контрольная сумма карты должна заканчиваться на 0. Контрольная сумма
вычисляется с использованием Алгоритма Луна (см. Википедию)

24.

Алгоритм Луна.
Visa: 4003600000000014
Шаг 1. Начиная с предпоследней цифры номера карты, умножьте каждую вторую
цифру на 2 и сложите цифры полученных произведений.
4003600000000014
1·2 + 0·2 + 0·2 + 0·2 + 0·2 + 6·2 + 0·2 + 4·2
2+ 0 + 0
+ 0 + 0 + 12 + 0 + 8
2+ 0 + 0
+ 0 + 0 + 1 + 2 + 0 + 8 = 13

25.

Алгоритм Луна.
Visa: 4003600000000014
Шаг 2. Добавьте к полученной сумме сумму всех цифр, которые не умножались на
2, начиная с конца.
4003600000000014
13 + 4 + 0 + 0 + 0 + 0 + 0 + 3 + 0 = 20 (контрольная сумма)
Шаг 3. Если контрольная сумма заканчивается на цифру 0, то кредитная карта
действительна.

26.

Алгоритм Луна.
4003600000000014 - Visa
5555555555554444 - Master Card
5105105105105100 - Master Card
4111111111111111 - Visa
4012888888881881 - Visa
378282246310005 - American Express
Больше тестовых примеров здесь https://developer.paypal.com/docs/payflow/payflow-pro/payflow-pro-testing/

27.

Решение
Функция 1. Проверим, что пришло на вход алгоритма. Все введенные
символы должны быть цифрами. Длина введенной
последовательности символов должна быть равна 13, 15 или 16.
def isValidNumber(string):
return string.isdigit() and len(string) in [13, 15, 16]

28.

Решение
Функция 2. Найдем контрольную сумму, используя алгоритм Луна
def getCheckSum(string):
checkSum = 0
for i in reversed(range(0, len(string) - 1, 2)):
if int(string[i]) * 2 > 9:
checkSum = checkSum + 1 + int(string[i]) * 2 - 10
else:
checkSum = checkSum + int(string[i]) * 2
for i in reversed(range(1, len(string) + 1, 2)):
checkSum += int(string[i])
return checkSum

29.

Решение
Функция 3. Определим тип карты (Master, Visa, Amex или Invalid)
def getCardType(string):
if len(string) == 13 or len(string) == 16 and string.startswith("4"):
return "Visa"
if len(string) == 15 and string.startswith("34") or string.startswith("37"):
return "American Express"
if len(string) == 16 and re.match(r'5[1-5]', string[:2]):
return "Master Card"
return "Invalid"

30.

Решение
Запускаем!
cardNumber = (input("Введите номер банковской карты: "))
if isValidNumber(cardNumber):
if getCheckSum(cardNumber) % 10 == 0:
print(getCardType(cardNumber))
else:
print("Invalid")
English     Русский Правила