Решение: Подсчёт шестнадцатеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в шестнадцатеричной системе счисления трёхзначна и оканчивается на цифру 8. Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0, которое не входит в последовательность. Программа должна напечатать только одно число — количество искомых элементов.
Пример: для последовательности 168, 280, 888, 952, 4120 программа должна вывести 3.
Решение по шагам
5 шаговСоздадим переменную-счётчик и установим её начальное значение равным нулю.
$$count = 0$$Будем считывать числа в цикле. При вводе нуля завершаем цикл, так как ноль является признаком окончания последовательности.
$$n = 0 \Rightarrow \text{конец ввода}$$Переведём каждое введённое число в шестнадцатеричную систему счисления с помощью функции `format(n, 'X')`.
Проверим, что полученная запись имеет ровно три символа и заканчивается символом 8. Если оба условия выполнены, увеличим счётчик.
$$len(s) = 3 \land s.endswith('8')$$После завершения ввода выведем количество найденных чисел.
Программа на Python подсчитывает числа с трёхзначной шестнадцатеричной записью, оканчивающейся на 8, и выводит их количество.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют последнюю цифру в десятичной записи, а не в шестнадцатеричной.
Считают число 0 элементом последовательности.
Проверяют только длину записи или только её последний символ.
Используют условие `len(s) >= 3` вместо проверки ровно трёхзначной записи.