Вчера мы опубликовали пятую задачу на поиск ошибки в коде. Верное решение в комментариях написал Oleg Malakhov.
Код задачи:
user_input = "login password"
user_input = user_input.split()
password, login = user_input.pop(), user_input
credentials = {login: password}
print(credentials)
Разбор задачи. Создаём переменную user_input, в которую помещаем строку "login password".
Затем в переменную user_input при помощи строкового метода .split() помещаем список из двух строк ["login", "password"].
Далее в две переменные password и login помещаем следующее:
- В переменную password помещаем результат работы метода .pop(), удаляющего и возвращающего последний элемент списка.
- В переменную login помещаем то, что находится в переменной user_input, а именно список с единственным элементом - ["login"]
После этого создаём переменную credentials и инициализируем в ней словарь, используя переменные login и password в качестве ключа и значения, соотвественно.
В конце вызываем функцию print(), которой распечатываем словарь из переменной credentials.
Почему ошибка? Ошибка заключается в передаче списка в качестве ключа для словаря. Ключом словаря может быть только хешируемые типы данных. Подробнее об этом рассказано в разборе 7-й задачи.
Как можно исправить? Исправить можно двумя способами:
Первый способ — это распаковать список с одним элементом в переменную:
password, login = user_input.pop(), *user_input
Не самый лучший, поскольку в списке может быть больше одного элемента, в таком случае питон не найдёт переменную для распаковки и выдаст другую ошибку.
Второй способ — это явно указать на то, что нам нужен первый(нулевой) элемент:
password, login = user_input.pop(), user_input[0]
В таком случае гарантированно вернётся первый элемент из списка, а будет он тем, который нужен или нет, — это уже другой вопрос.
· 17.07.2024
user_input = "login fff ggg password" user_input = user_input.split () password, login, *_ = user_input.pop(), *user_input print(user_input) credentials = {login: password} print (credentials)
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён