Функции и словари
Функции и словари хорошо сочетаются. Функция может получить словарь в качестве аргумента и использовать нужные ей значения:
def describe(pet):
return f"{pet['name']} — {pet['species']}."
rex = {"name": "Рекс", "species": "собака", "age": 3}
print(describe(rex))
print(describe({"name": "Кеша", "species": "попугай", "age": 4}))Рекс — собака.
Кеша — попугай.Параметр pet — это имя для того словаря, который вы передаёте в вызове: в первом вызове это словарь Рекса, во втором — Кеши. Вместо отдельных аргументов для имени и вида вы передаёте один словарь, а функция берёт из него то, что ей нужно.
Функция может получить и список словарей. Эта возвращает словарь самого старшего питомца. Она использует приём поиска наибольшего значения из урока про циклы:
def oldest(pets):
result = pets[0]
for pet in pets:
if pet["age"] > result["age"]:
result = pet
return result
pets = [
{"name": "Рекс", "species": "собака", "age": 3},
{"name": "Белла", "species": "кошка", "age": 5},
{"name": "Кеша", "species": "попугай", "age": 4}
]
winner = oldest(pets)
print(winner["name"], "старше всех.")Белла старше всех.А ещё функция может возвращать новый словарь. Это удобно, когда вы создаёте много словарей одинаковой формы: ключи вы пишете только один раз, в функции, и у каждого возвращённого словаря будут одни и те же ключи:
def create_pet(name, species):
return {"name": name, "species": species, "age": 0}
new_pets = []
new_pets.append(create_pet("Снежок", "кролик"))
new_pets.append(create_pet("Макс", "собака"))
print(new_pets)[{'name': 'Снежок', 'species': 'кролик', 'age': 0}, {'name': 'Макс', 'species': 'собака', 'age': 0}]"name": name может показаться странным. Слева от двоеточия — ключ, текст "name" в кавычках. Справа — его значение: параметр name, в котором при первом вызове лежит "Снежок". Новому питомцу всегда 0 лет, поэтому "age" равно 0 в каждом словаре, который создаёт функция.
Типичная ошибка — забыть return. Тогда функция возвращает None, и список был бы [None, None].
Задание
- 1
Дополните функцию
total_score(): она должна сложить очки всех игроков из полученного списка и вернуть сумму. Тогда программа должна вывестиИтого: 355. - 2
Дополните функцию
create_player(): она должна вернуть нового игрока, то есть словарь с ключом"name", в котором лежит параметрname, и ключом"score", в котором лежит0. Тогда последние две строки должны быть{'name': 'Макс', 'score': 0}и{'name': 'Лили', 'score': 0}.