Шешімі: Исправление программы поиска цифры
На обработку поступает натуральное число, не превышающее $10^9$. Нужно написать программу, которая выводит на экран минимальную чётную цифру этого числа. Если в числе нет чётных цифр, требуется вывести «NO». Программист написал программу неправильно. Последовательно выполните следующие действия: 1) определите, что выведет программа при вводе числа 231; 2) приведите пример такого трёхзначного числа, при вводе которого программа, несмотря на ошибки, выдаёт верный ответ; 3) найдите допущенные ошибки и исправьте их. Исправление каждой ошибки должно затрагивать только строку, в которой находится ошибка. Известно, что можно исправить ровно две строки. Достаточно указать ошибки и способ их исправления для одного языка программирования.
1N = int(input()) 2minDigit = N % 10 3while N > 0: 4 digit = N % 10 5 if digit % 2 == 0: 6 if digit < minDigit: 7 minDigit = digit 8 N = N // 10 9if minDigit == 0: 10 print("NO") 11else: 12 print(minDigit)
Шешімін қадамдап көрсету
5 қадамПри вводе 231 сначала выполняется присваивание minDigit = 231 % 10, поэтому minDigit получает значение 1.
$$231 \bmod 10 = 1$$Затем программа рассматривает цифры 1, 3 и 2. Цифра 2 чётная, но условие 2 < 1 ложно, поэтому значение minDigit не изменяется. В конце проверка minDigit == 0 также ложна, и программа выводит 1.
Пример числа, для которого программа случайно выдаёт правильный ответ, — 246. Начальное значение minDigit равно 6, затем оно заменяется на 4 и 2. В результате выводится 2 — минимальная чётная цифра числа.
Первая ошибка состоит в начальной инициализации минимума последней цифрой числа. Последняя цифра может быть нечётной и помешать поиску минимума. Исправление: minDigit = 10.
Вторая ошибка состоит в проверке minDigit == 0. Ноль является допустимой минимальной чётной цифрой, поэтому отсутствие найденной цифры нужно обозначить значением 10. Исправление: if minDigit == 10:.
1) При вводе 231 программа выводит 1. 2) Например, при вводе 246 программа выводит 2, что является правильным ответом. 3) В Python нужно заменить строку minDigit = N % 10 на minDigit = 10, а строку if minDigit == 0: на if minDigit == 10:.
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Считать, что при вводе 231 программа выводит 2, не учитывая начальное значение minDigit = 1.
Использовать 0 как признак отсутствия чётных цифр, хотя 0 сама является чётной цифрой.
Исправлять несколько команд в одной строке или переписывать алгоритм целиком вместо замены ровно двух строк.