Строки · 28 из 43
Номер карты по Луну
Лабораторная «строки». Борис Аркадьевич достаёт банковскую карту, закрывает пальцем имя и спрашивает: как терминал за долю секунды понимает, что кассир ошибся цифрой, ещё до связи с банком? Ответ — алгоритм Луна: последняя цифра номера контрольная, и сумма цифр, посчитанная по особому правилу, обязана делиться на 10.
Что сделать
Проверьте номер карты по алгоритму Луна: сложите цифры, удваивая каждую вторую справа, и посмотрите, делится ли сумма на 10.
Что приходит
nomer— номер строкой; между группами цифр бывают пробелы
Что вернуть
True, если номер проходит проверку, иначе False; знак, кроме цифры и пробела, или ни одной цифры — False.
Допишите функцию luna в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Номер 4111 1111 1111 1111: справа пятнадцать единиц, слева четвёрка. Удваиваются восемь цифр — семь единиц дают по 2, четвёрка даёт 8; остальные восемь единиц — по 1. Сумма 14 + 8 + 8 = 30 делится на 10 — True.
luna("4111 1111 1111 1111")
True
Пробелы убираются. Если осталась пустая строка или в ней есть что-то, кроме цифр, — ответ False.
Цифры нумеруются справа налево с нуля. Каждая цифра с нечётным номером (вторая, четвёртая… справа) удваивается; если вышло больше 9, из результата вычитается 9. Остальные цифры берутся как есть.
Номер верный, если сумма всех полученных чисел делится на 10.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.