Код работает, но ответ не выводится, питон
Текст задачи:
Автомат получает на вход трёхзначное число. По этому числу строится новое число по следующим правилам.
1. Перемножаются отдельно первая и вторая цифры, а также вторая и третья цифры.
2. Полученные два числа записываются друг за другом в порядке невозрастания без разделителей.
Пример. Исходное число: 179. Произведения: 1 · 7 = 7; 7 · 9 = 63. Результат: 637.
Укажите наименьшее число, при обработке которого автомат выдаёт результат 123.
Мой код:
for N in range (100, 1000):
n = list(map(int, str(N)))
n1, n2 = int(n[0]) * int(n[1]), int(n[1]) * int(n[2])
if n1 > n2:
n3 = int(str(n2) + str(n1))
if n3 == 123:
print(N, n3)
else:
pass
elif n1 < n2:
n3 = int(str(n1) + str(n2))
if n3 == 123:
print(N, n3)
else:
pass
else:
pass
Что не так?
ЗАЧЕМ писать для этого программу? Задача решается в уме за несколько секунд.
123 -> 12|3 -> 4 * 3 | 3 * 1 -> 1, 3, 4 -> 134
Но если так хочется кодом, то:
for n in range(100, 1000):
t = list(map(int, str(n)))
if ''.join(map(str, sorted([t[0] * t[1], t[1] * t[2]], reverse=True))) == '123': break
print(n)
Ваш код имеет несколько проблем, которые могут мешать ему корректно работать. Давайте разберем их и исправим:
Проверка условия: Вы проверяете, что n3 равно 123, но не сохраняете найденное значение. Вам нужно сохранить наименьшее значение N, которое удовлетворяет условию.
Пропущенный случай: Если n1 равно n2, ваш код пропускает этот случай, хотя он тоже может быть решением.
Неоптимальный подход: Ваш код проверяет все числа от 100 до 999, что может быть неэффективно.
Вот исправленный код:
min_N = 1000 # Начальное значение для поиска минимального N
for N in range(100, 1000):
n = list(map(int, str(N)))
n1, n2 = n[0] * n[1], n[1] * n[2]
if n1 >= n2:
n3 = int(str(n1) + str(n2))
else:
n3 = int(str(n2) + str(n1))
if n3 == 123:
min_N = min(min_N, N)
print(min_N)
Этот код находит наименьшее число N, которое при обработке автоматом дает результат 123. Он проверяет все числа от 100 до 999 и сохраняет наименьшее значение N, которое удовлетворяет условию.
pass вообще там зачем? Эта команда не для такого что тебе кажется, это просто временная заглушка для функции во время написания и обмозгования кода. Типа "вот тут нужна функция, но пока нужно только напоминание что эта функция здесь нужна, а реализуем ее потом..."
pass прописывают только в таких случаях. В итоговом коде никаких pass нет