Общий комментарий: если в задаче не сказано явно, что функция принимает на вход информацию, введенную пользователем с клавиатуры, не нужно добавлять input()
.
Напишите функцию square()
, которая принимает на вход число и:
# возвращает квадрат числа
def square(x):
return x**2
square(6)
36
res1 = square(6)
res1 # результат сохранен
36
# выводит на экран сообщение и ничего не возвращает
def square2(x):
print("Квадрат числа равен: ", x**2)
# без return
# или так (тот же код)
def square2(x):
print("Квадрат числа равен: ", x**2)
# с пустым return
return
square2(6)
Квадрат числа равен: 36
res2 = square2(6)
res2 # результат не сохранен
Квадрат числа равен: 36
print(res2) # вместо результата - пустота
None
# и возвращает результат, и выводит сообщение
def square3(x):
print("Квадрат числа равен: ", x**2)
return x**2
square3(6)
Квадрат числа равен: 36
36
res3 = square3(6)
res3 # результат сохранен
Квадрат числа равен: 36
36
Напишите функцию nums()
, которая принимает на вход целое число, а возвращает список из двух элементов: целое число, предшествующее принятому на вход, и число, следующее за ним.
Пример:
Входные данные:
7
Выходные данные:
[6, 8]
def nums(n):
r = [n - 1, n + 1]
return r
nums(0)
[-1, 1]
# или совсем в две строчки
def nums(n):
return [n - 1, n + 1]
Напишите функцию str_lower()
, которая принимает на вход строку (набор слов через пробел), а возвращает список ее элементов в нижнем регистре.
Пример:
Входные данные:
"В лесу родилась ёлочка В лесу она росла"
Выходные данные:
['в', 'лесу', 'родилась', 'ёлочка', 'в', 'лесу', 'она', 'росла']
def str_lower(s):
s_list = s.split() # разбиваем строку по пробелу
new_list = [] # создаем пустой список
for i in s_list:
new_list.append(i.lower()) # приводим каждый элемент к нижнему регистру и добавляем в новый список
return new_list
str_lower("В лесу родилась ёлочка В лесу она росла")
['в', 'лесу', 'родилась', 'ёлочка', 'в', 'лесу', 'она', 'росла']
# или более компактно и быстро - списковые включения
def str_lower(s):
s_list = s.split() # разбиваем строку по пробелу
new_list = [i.lower() for i in s_list]
return new_list
str_lower("В лесу родилась ёлочка В лесу она росла")
['в', 'лесу', 'родилась', 'ёлочка', 'в', 'лесу', 'она', 'росла']
Напишите функцию my_log()
, которая принимает на вход список чисел, и возвращает список их натуральных логарифмов. Если число меньше или равно 0, на его месте в возвращаемом списке должно быть None.
Пример:
Входные данные:
[1, 3, 2.5, -1, 9, 0, 2.71]
Выходные данные:
[0.0,
1.0986122886681098,
0.9162907318741551,
None,
2.1972245773362196,
None,
0.9969486348916096]
# можно импортировать math внутри функции, но тогда Python не будет понимать команды с math за пределами my_log
import math
def my_log(L):
logs = []
for i in L:
if i > 0:
logs.append(math.log(i))
else:
logs.append(None) # None без кавычек
return logs
my_log([1, 3, 2.5, -1, 9, 0, 2.71])
[0.0, 1.0986122886681098, 0.9162907318741551, None, 2.1972245773362196, None, 0.9969486348916096]
Напишите функцию, которая принимает на вход два списка (имена людей и их возраст) и делает следующее:
если эти два списка имеют одинаковую длину, то возвращает словарь с парами имя-возраст;
если эти два списка имеют разную длину, то функция выводит на экран сообщение "Списки имеют разную длину" и возвращает пустой словарь.
Пример:
Входные данные:
["Ann", "Tim", "Sam"]
[12, 23, 17]
Выходные данные:
{"Ann": 12, "Tim": 23, "Sam": 17}
Входные данные:
["Ann", "Tim", "Sam"]
[12, 23, 17, 45]
Выходные данные:
Списки имеют разную длину
{}
def ages(L1, L2):
if len(L1) == len(L2):
d = dict(zip(L1, L2))
else:
print("Списки имеют разную длину")
d = {}
return d
# альтернативный код
def ages(L1, L2):
if len(L1) == len(L2):
return dict(zip(L1, L2))
else:
print("Списки имеют разную длину")
return {}
# еще альтернативный код
def ages(L1, L2):
d = {}
if len(L1) == len(L2):
d = dict(zip(L1, L2))
else:
print("Списки имеют разную длину")
return d
ages(["Ann", "Tim", "Sam"], [12, 23, 17])
{'Ann': 12, 'Sam': 17, 'Tim': 23}
ages(["Ann", "Tim", "Sam"], [12, 23])
Списки имеют разную длину
{}
Напишите функцию binom_prob()
, которая считает вероятность того, что проведя n
испытаний Бернулли с вероятностью успеха p
, мы получим ровно k
успехов. Эта функция принимает на вход три аргумента: p
, n
и k
и возвращает такой результат:
$P(X = k) = С_n^k \cdot p^k \cdot (1-p)^{n-k}$
Для расчета биномиального коэффициента можно использовать функцию, написанную на лекции.
# функция для факториала с лекции
def factorial(n):
f = 1
for i in range(2, n + 1):
f = f * i
return f
# функция для биномиального коэффициента с лекции
def binom(n, k):
c = factorial(n) // (factorial(k) * factorial(n-k))
return c
def binom_prob(p, n, k):
r = binom(n, k) * p **k * (1-p)**(n-k)
return r
binom_prob(0.5, 5, 3)
0.3125
Напишите функцию all_sort()
, которая принимает на вход перечень целых чисел через запятую (не список, а просто сколько угодно значений через запятую) и возвращает список этих значений, отсортированный по возрастанию.
Пример:
Входные данные:
7, 6, 1, 3, 8, 0, -2
Выходные данные:
[-2, 0, 1, 3, 6, 7, 8]
def all_sort(*args):
res = sorted(args)
return res
all_sort(7, 6, 1, 3, 8, 0, -2)
[-2, 0, 1, 3, 6, 7, 8]