print(8)
8
from math import sqrt
sqrt(6) + sqrt(9)
5.449489742783178
Напишем код, который будет вычислять факториал от числа $n$ ($n!$):
n = 5
f = 1
for i in range(2, n + 1):
f = f * i
print(f)
120
Теперь напишем функцию factorial()
, которая принимает на вход целое число, а возвращает факториал этого числа:
def factorial(n):
f = 1
for i in range(2, n + 1):
f = f * i
return f
factorial(9)
362880
factorial(3) + factorial(4)
30
return
vs print
¶def say_hello(name):
print("Hello,", name)
w = say_hello("Alla")
Hello, Alla
print(w)
None
def say_hello(name):
h = "Hello, " + name
print(h)
return h
w2 = say_hello("Alla")
Hello, Alla
w2
'Hello, Alla'
Напишем функцию, которая будет вычислять биномиальный коэффициент:
def binom_coeff(n, k):
"""
Calculates binomial coefficient.
Parameters:
n – is an integer
k – is an integer
Returns:
binomial coeff (integer)
"""
res = factorial(n) // (factorial(k) * factorial(n - k))
return res
binom_coeff(6, 2)
15
help(binom_coeff)
Help on function binom_coeff in module __main__: binom_coeff(n, k) Calculates binomial coefficient. Parameters: n – is an integer k – is an integer Returns: binomial coeff (integer)
А теперь напишем функцию, которая не только принимает на вход два аргумента, но и возвращает сразу два результата (оба результата в return объединятся в кортеж):
def my_power(a, b):
return a ** b, b ** a
my_power(4, 3)
(64, 81)
Сохраним результаты отдельно (множественное присваивание):
x1, x2 = my_power(4, 3)
x1
64
x2
81
Пользователь обязательно должен подать на вход функции язык приветствия:
def hello(name, lang):
if lang == "ru":
print(f"Здравствуйте, {name}!")
if lang == "en":
print(f"Hello, {name}!")
if lang == "fr":
print(f"Bonjours, {name}!")
return
hello("Alla", "en")
Hello, Alla!
Если пользователь забудет указать язык, по умолчанию будет использоваться английский (en
):
def hello(name, lang = "en"):
if lang == "ru":
print(f"Здравствуйте, {name}!")
if lang == "en":
print(f"Hello, {name}!")
if lang == "fr":
print(f"Bonjours, {name}!")
return
hello("Alla")
Hello, Alla!
Многие функции и методы в Python имеют значения по умолчанию. Так, метод .split()
на строках по умолчанию разбивает строку по пробелу:
"a-b-c".split("-") # задали символ для разбиения
['a', 'b', 'c']
"a b c".split() # ничего не задали – используется пробел
['a', 'b', 'c']
print(6, 7, "a", [3, 7])
6 7 a [3, 7]
Используем *
, чтобы функция приняла на вход любое количество аргументов, а потом объединила из в кортеж:
def my_fun(*args):
m = max(args)
return m
my_fun(9, 5, 0, 5, 2, 1, 11)
11
def my_square(x):
return x ** 2
my_square(6)
36
sq = lambda x: x ** 2
sq(9) + sq(8)
145
my_sum = lambda x, y: x + y
my_sum(6, 5)
11
lambda s: s.strip()
L = [0, 2, 7, 5, 4, 3, 2]
[x for x in L if x > 3]
[7, 5, 4]
list(filter(lambda x: x > 3, L))
[7, 5, 4]
list(filter(lambda x: (x > 3) & (x < 6), L))
[5, 4]
[x ** 2 for x in L]
[0, 4, 49, 25, 16, 9, 4]
list(map(lambda x: x ** 2, L))
[0, 4, 49, 25, 16, 9, 4]
%%timeit
[x ** 2 for x in L]
1.75 µs ± 11.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%%timeit
list(map(lambda x: x ** 2, L))
2.14 µs ± 27.7 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)