Рецепты · Шаг 1 из 4
Строка рецепта
Рецепты пишут как привыкли: «Мука — 200 г», «Молоко - 0,5 л», «Яйца — 2 шт.», «Соль — по вкусу». Чтобы что-то посчитать, строку надо разобрать на название и количество, а килограммы и литры сразу перевести в граммы и миллилитры — тогда дальше все числа целые.
Что сделать
Разберите строку рецепта на название и количество, переведя килограммы и литры в граммы и миллилитры.
Что приходит
stroka— строка рецепта:"Мука — 200 г","Молоко - 0,5 л","Соль — по вкусу"
Что вернуть
Словарь {"chto": …, "skolko": …, "edinica": …}: название строчными, количество целым в "г", "мл" или "шт"; «по вкусу» — None и None; не разобралось — ValueError.
Допишите функцию razobrat_stroku в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Программа зовёт razobrat_stroku на каждую строку рецепта. Строку, на которой вы подняли ValueError, она пропускает и показывает человеку: «блины, строка 5: …» — с вашим текстом ошибки.
"Молоко — 0,5 л": название — «молоко», количество — поллитра, то есть 500 миллилитров: {"chto": "молоко", "skolko": 500, "edinica": "мл"}.
razobrat_stroku("Молоко — 0,5 л")
{'chto': 'молоко', 'skolko': 500, 'edinica': 'мл'}
Название и количество разделены длинным тире «—» или дефисом с пробелами вокруг « - ». Название — всё до разделителя, без пробелов по краям, строчными буквами.
Количество — либо слова «по вкусу» (тогда skolko и edinica — None), либо число и единица через пробел. Единицы:
г,мл,шт— число целое, так и остаётся;кгил— число может быть дробным, с запятой или точкой; количество умножается на 1000 и становится граммами или миллилитрами, округлённоеroundдо целого.
Точка после единицы не мешает: «шт.» — то же, что «шт». Регистр в количестве не важен: «По вкусу», «КГ».
ValueError — если нет разделителя, название пустое, в количестве не два слова, единица незнакомая, число не число (или дробное у г, мл, шт) или количество не больше нуля. Текст ошибки — ваш, его покажут человеку; тест проверяет только, что ошибка — ValueError.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.