Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 10, 2022 17:35:08

karinskiyyarik1
Зарегистрирован: 2021-12-27
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите с задачей яндекс практикум операция со множествами задние 2

текст задачи

Игра в города продолжается. Анфиса покопалась в сети и нашла дополнительный список городов для игры. Но у неё нет инструмента, чтобы добавить новые города в множество all_cities.
Напишите функцию add_cities(), которая добавит элементы из списка new_cities в all_cities.
Метод union() для этой задачи не подходит, ведь вам нужно добавить элементы в существующее множество, а не создать новое.

код задачи

def print_valid_cities(all_cities, used_cities):
diff = all_cities.difference(used_cities)
for city in diff:
print(city)


def add_cities(all_cities, new_cities):
# Напишите код функци
for city in new_cities:
add_cities=all_cities.add(city)
print(city)

# Анфиса нашла названия нескольких новых городов,
# эти города нужно добавить в множество all_cities
new_cities = [
'Екатеринбург',
'Выборг' ,
'Владивосток',
'Казань',
'Why',
'Йезд'
]

all_cities = {
'Абакан',
'Астрахань',
'Бобруйск',
'Калуга',
'Караганда',
'Кострома',
'Липецк',
'Новосибирск'
}

used_cities = {
'Калуга',
'Абакан' ,
'Новосибирск'
}

add_cities(all_cities, new_cities)
print_valid_cities(all_cities, used_cities)

...
pass

вот какой должен быть вывод
Екатеринбург
Бобруйск
Казань
Владивосток
Караганда
Why
Липецк
Выборг
Йезд
Кострома
Астрахань

Отредактировано karinskiyyarik1 (Янв. 10, 2022 17:43:13)

Офлайн

#2 Янв. 10, 2022 23:06:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

помогите с задачей яндекс практикум операция со множествами задние 2

Дописал функцию add_cities().

  
>>> def print_valid_cities(all_cities, used_cities):
...     diff = all_cities.difference(used_cities)
...     for city in diff:
...         print(city)
... 
>>> def add_cities(all_cities, new_cities):
...     for city in new_cities:
...         all_cities.add(city)
... 
>>> 
>>> # Анфиса нашла названия нескольких новых городов, 
... # эти города нужно добавить в множество all_cities 
... new_cities = [
...     'Екатеринбург',
...     'Выборг' ,
...     'Владивосток',
...     'Казань',
...     'Why',
...     'Йезд'
... ]
>>> 
>>> all_cities = {
...     'Абакан',
...     'Астрахань', 
...     'Бобруйск', 
...     'Калуга',
...     'Караганда',
...     'Кострома',
...     'Липецк', 
...     'Новосибирск'
... }
>>> 
>>> used_cities = {
...     'Калуга',
...     'Абакан' ,
...     'Новосибирск'
... }
>>> 
>>> add_cities(all_cities, new_cities)
>>> print_valid_cities(all_cities, used_cities)
Владивосток
Караганда
Казань
Липецк
Why
Екатеринбург
Выборг
Астрахань
Бобруйск
Кострома
Йезд
>>>
karinskiyyarik1
вот какой должен быть вывод
Екатеринбург
Бобруйск
Казань
Владивосток
Караганда
Why
Липецк
Выборг
Йезд
Кострома
Астрахань
Города те же, порядок не сохраняется, так как множества сами по себе не упорядочены. В питоне есть иключение одно: словари стали упорядочены. Но словари в питоне это такие множества нагруженные, раньше они были неупорядоченными, какими и должны быть обычно (в разных языках они могут быть и упорядоченными не обязаны быть). Просто в питоне их, спустя какое-то время, упорядочили для удобства.



Отредактировано py.user.next (Янв. 10, 2022 23:09:56)

Офлайн

#3 Янв. 11, 2022 15:09:46

karinskiyyarik1
Зарегистрирован: 2021-12-27
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите с задачей яндекс практикум операция со множествами задние 2

karinskiyyarik1
def add_cities(all_cities, new_cities):
… for city in new_cities:
… all_cities.add(city)
Спасибо. Подскажи пожалуйста почему не надо было писать print во второй цикле def

Офлайн

#4 Янв. 11, 2022 22:41:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

помогите с задачей яндекс практикум операция со множествами задние 2

karinskiyyarik1
Подскажи пожалуйста почему не надо было писать print во второй цикле def
Потому что функция должна делать что-то одно. Если функция выводящая что-то на экран, то у неё есть в имени слово print и внутри неё можно выводить на экран. А если функция просто что-то куда-то добавляет, то там в имени нет print и поэтому и выводить она ничего не должна.

То, что функция должна делать что-то одно, называется “функциональной прочностью модуля по Майерсу”. Функция должна отвечать точно на вопрос “что делает эта функция?”, ответ для твоей функции такой - “дополняет множество городов”. То есть там нет такого “дополняет множество городов И выводит города на экран И чистит кошку от шерсти И ходит в магазин”. Только одно она делает и всё.

То, что функция не должна ничего выводить, называется “чистотой функции”. Чистая функция - это функция, которая не цепляет ничего больше, кроме своих данных. То есть она не цепляет экран, чтобы вывести что-то на него, не цепляет файлы и не держит их открытыми, не обращается к другим функциям и не обращается к каким-то общим данным, которые доступны другим частям программы. Она работает только со своими данными и только у себя внутри.

Так что нужно стремиться к тому, чтобы каждая функция была функционально прочной и чтобы каждая функция была чистой. Тогда у тебя код, состоящий из таких функций, будет пуленепробиваемым. Пуленепробиваемость кода - это такое свойство кода, при котором любые изменения в программе не затрагивают уже написанный код и не заставляют его переписывать или редактировать его как-то.


tags: pure function



Отредактировано py.user.next (Фев. 13, 2023 22:08:47)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version