Свои команды · Шаг 2 из 4
Слова в аргументы
Из командной строки всё приходит строками и одним списком:
«сумма 2 3» и «пароль длина=16» выглядят одинаково. Кто-то должен разобрать этот список на имя команды и её аргументы.
Что сделать
Разберите командную строку на имя команды и её аргументы.
Что приходит
slova— слова командной строки после имени программы:["пароль", "длина=16"]
Что вернуть
Тройку (имя, позиционные, именованные): слово с «=» — именованный аргумент, остальные — позиционные; слова из цифр, и с минусом, — целыми.
Допишите функцию razobrat в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Утилита зовёт razobrat первым делом — на всё, что набрано после её имени, — и отдаёт результат шагу 4. Решите шаг — и сумма 2 3 сложит числа, а не строки.
["пароль", "длина=16", "знаки=да"] — это команда «пароль» и два именованных аргумента: ("пароль", [], {"длина": 16, "знаки": "да"}). «Адрес=ул. Мира=2» делится по первому «=».
razobrat(['сумма', '2', '3'])
('сумма', [2, 3], {})
Функция принимает список слов — то, что пришло в командной строке после имени программы. Возвращает кортеж из трёх: имя команды, список позиционных аргументов и словарь именованных.
Первое слово — имя команды. Если слов нет вовсе, имя — пустая строка, аргументов нет.
Дальше: слово со знаком равенства, перед которым что-то есть, — именованный аргумент; делится по ПЕРВОМУ равенству, так что «адрес=ул. Мира=2» даёт значение «ул. Мира=2». Всё прочее — позиционный аргумент, по порядку. Слово из одних цифр, возможно с минусом впереди, превращается в целое число — и в позиционных аргументах, и в значениях именованных. Остальное остаётся строкой.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.