Python одиночная выборочная замена цифр
Python Задача такова: заменить цифру в даном цисле так, чтобы оно нацело делилось на 3. Цифру заменять обязательно. Даже если и до этого делилось на 3. Менять можно только одну цифру. После найти наибольшее возможное число и вывести его.
Пример: Input: 1, out:3. ----- Input: 21, out: 24. ----- Input 454, out: 456.
Вывод должен быть натуральным числом. Мучился с кодом. Ничего поделать не могу. Даже не дописал до конца.
x_conserv = list(input())
x = x_conserv
predictions = []
for index in range(len(x)):
for num in range(0, 10):
x[index] = num
predictions.append(x)
print(x_conserv, x)
print(predictions)
Абсолютно не понимаю почему вывод -
[9, 9] [9, 9]
[[9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9]]
Из своих экспериментов я понял только то, что "=" работает в две стороны. Но это противоречит моим прежним знаниям. Да и потом написал программу, которая опровергла это. Короче запутался я. Спасити пожалуйста). Благодаю.
Ответы (1 шт):
Как работает ваш код:
Вы вводите x_conserv, потом в цикле перебираете кол-во элементов, зачем-то повторяете все это 10 раз, и выводите x_conserv, x и predictions, по сути 3 списка которые продублировались очень много раз без причины, на самом деле вам хватило бы вот такого кода:
x_conserv = [1, 20, 454]
predictions = []
for index in x_conserv :
while int(index) % 3 != 0:
index += 1
predictions.append(index)
print(x_conserv)
print(predictions)
Вот ввод и вывод:
[1, 21, 454]
[3, 21, 456]
Если Вам нужно именно вводить числа с клавиатуры, используйте вот этот вариант
x = input().split()
x_conserv = list(map(int, x))
predictions = []
for index in x_conserv :
while int(index) % 3 != 0:
index += 1
predictions.append(index)
print(x_conserv)
print(predictions)