Similar presentations:
Lecture06_Python_Functions
1. Функции
2. Хранимые (и повторно используемые) шаги
defthing():
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 = 5print('Привет')
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")
programming