Продукты
Примеры вызова и вывода функции
Вызов #1:
printGroceries('Бананы', [1, 2], ('Python',), 'Яблоки', '', 'Макароны', 5, True, 'Кофе', False)
Вывод #1:
1) Бананы 2) Яблоки 3) Макароны 4) Кофе
Вызов #2:
printGroceries([4], {}, 1, 2, {'Mathlab'}, '')
Вывод #2:
Нет продуктов
Решение
Способ 1:
def printGroceries(*args): products = [i for i in args if type(i) is str and i != ''] if len(products) != 0: res = [str(i+1)+')' + ' ' + products[i] for i in range(len(products))] result = 'n'.join(res) print(result) else: print('Нет продуктов')
Способ 2:
def printGroceries(*args): list_products = [i for i in args if type(i) == str and len(i) > 0] if len(list_products) == 0: print("Нет продуктов") else: for i in range(len(list_products)): print(f'{i+1}) {list_products[i]}')
Способ 3:
def printGroceries(*args): ls = [i for i in args if type(i) == str and i not in ('', ' ')] print('n'.join([f'{num}) {i}' for num, i in enumerate(ls, 1)]) if ls else 'Нет продуктов')
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»
Интересно, перейти к каналу
Личные данные
Примеры вызова и вывода функции
Вызов #1:
personalData(first_name='John', last_name='Doe', age=28, position='Python developer')
Вывод #1:
age: 28 first_name: John last_name: Doe position: Python developer
Вызов #2:
personalData(first_name='Jack', last_name='Smith', age=32, work_experience = '5 years', position='Project manager')
Вывод #2:
age: 32 first_name: Jack last_name: Smith position: Project manager work_experience: 5 years
Решение
Способ 1:
def personalData(**kwargs): for k, v in sorted(kwargs.items()): print(f'{k}: {v}')
Способ 2:
def personalData(**kwargs): [print(f'{key}: {kwargs[key]}') for key in sorted(kwargs.keys())]
Способ 3:
def personalData(**kwargs): print('n'.join(f'{k}: {v}' for k, v in sorted(kwargs.items())))
Значение многочлена
Многочленом степени n называется выражение вида
Напишите функцию evaluate(coefficients, x) , которая принимает список коэффициентов и значение аргумента x . При реализации можно использовать анонимные lambda -функции, а также встроенные функции map() и reduce() .
Примеры вызова и вывода функции
Ввод:
2 4 3 10
Вывод:
243
Решение
Способ 1:
from functools import reduce import operator def evaluate(a, x): xi = map(lambda i: x**i, range(len(a)-1, -1, -1)) axi = map(operator.mul, a, xi) return reduce(operator.add, axi, 0) a = list(map(int, input().split())) x = int(input()) print(evaluate(a, x))
Способ 2:
from functools import reduce evaluate = lambda coefficients, x: reduce(lambda s, a: s * x + a, coefficients, 0) print(evaluate([*map(int, input().split())], int(input())))
Способ 3:
(lambda a, x: print(sum(map(lambda i: x**i[0] * int(i[1]), enumerate(a)))))(input().split()[::-1], int(input()))
Способ 4:
def evaluate(coefficients, x): s = 0 for a in coefficients: s = s * x + a return s c = [*map(int, input().split())] x = int(input()) print(evaluate(c, x))
Способ 5:
from functools import reduce def evaluate(coe, x): return reduce(lambda n, z: n + z[1] * x**(len(coe) - z[0]), list(enumerate(coe[:-1], 1)), 0) + coe[-1] print(evaluate(list(map(int, input().split())), int(input())))
Сравнение словарей
added
, если ключа не было в первом словаре, но он появился во втором;
deleted
, если ключ был в первом словаре, но его не было во втором;
changed
, если ключ присутствует в обоих словарях, но значения различаются;
equal
, если ключ присутствует в обоих словарях, и значения совпадают.
Примечание: ключи и значения словарей представлены исключительно в строковом типе данных. Ключи в возвращаемом функцией словаре должны располагаться в следующем порядке: сначала все ключи первого словаря, затем — второго.
Решение
Способ 1:
def keyDifference(dict1, dict2): d1, d2 = set(dict1), set(dict2) sample = list(dict1.keys()) + list(dict2.keys()) return dict(sorted([(i, 'deleted') for i in d1 - d2] + [(i, 'equal') if dict1[i] == dict2[i] else (i, 'changed') for i in d1 & d2] + [(i, 'added') for i in d2 - d1], key=lambda x: sample.index(x[0])))
Способ 2:
def keyDifference(dict1, dict2): d = {} for i in dict1: if i in dict2: d[i] = ('changed','equal')[dict2[i]==dict1[i]] else: d[i] = dict2.get(i,'deleted') for i in dict2: if i not in d: d[i] = 'added' return d
Способ 3:
def keyDifference(d_1, d_2): out = {} tmp = d_1 | d_2 for key, value in tmp.items(): out[key] = ('added' if d_1.get(key) is None else ('deleted' if d_2.get(key) is None else ('equal' if (d_1.get(key) == d_2.get(key)) else 'changed'))) return out
Лесенка
Лесенкой называется набор кубиков, в котором каждый последующий слой содержит меньше кубиков, чем предыдущий. Напишите программу, вычисляющую число лесенок, которое можно построить из n кубиков.
Лесенка из кубиков
Формат ввода
Натуральное число n (1 ≤ n ≤ 100 ) – количество кубиков в лесенке.
Формат вывода
Число лесенок, которые можно построить из n кубиков.
Примеры ввода и вывода
Ввод #1:
3
Вывод #1:
2
Ввод #2:
6
Вывод #2:
4
Решение
import functools @functools.lru_cache(maxsize=None) def kol_les(n, k): if n == 0: return 1 ans = 0 for i in range(k + 1, n + 1): ans += kol_les(n - i, i) return ans n = int(input()) print(kol_les(n, 0))
***
Материалы по теме
🐍 5 задач с решениями на Python для начинающих разработчиков
🐍 Регулярные выражения в Python за 5 минут: теория и практика для новичков и не только
🐍 Задача о поврежденной XML-строке