Я предполагаю, что я решу эту проблему с неправильными углами или не имею надлежащего понимания встроенных функций и синтаксиса для решения моих проблем, несмотря на мои попытки. Я также обнаружил, что:
input("Enter input: ")
является опасным и должен использовать raw_input вместо этого, но не может казаться, что это работает правильно.
Я хочу написать сценарий, который может принимать пользовательский ввод, преобразовывать его в список, умножать каждый отдельный элемент на 3, сканировать решение этой проблемы для любого "3" и удалять все вхождения "3", сохраняя при этом все остальные цифры в их соответствующих элементов в списке, чтобы затем распечатать или вернуть окончательный результат.
ех. ввод 1 2 3 приведет к выводу 6 9 как 1 * 3 = 3, который будет опущен. ех. ввод 2 6 11 будет выводить 6 18 как 11 * 3 = 33, и оба 3 будут опущены.
Если, например, пользователь должен был ввести x, где x * 3 = 2381193 - я хочу, чтобы это было преобразовано в 28119.
Я считаю, что самый простой способ сделать это - преобразовать в строку?
Я начал с чего-то вроде этого:
userInput = input("list element seperated by space: ")
nums = userInput.split()
x = int(nums[0]) * 3
y = int(nums[1]) * 3
z = int(nums[2]) * 3
output = x, y, z
negate = list(output)
if "3" in str(x):
del negate[0]
if "3" in str(y):
del negate[1]
if "3" in str(z):
del negate[2]
print(negate)
и теперь я передумал:
userInput = raw_input("list element seperated by space: ")
nums = userInput.split()
for x in list(nums):
numsList = int(x) * 3
output = list(numsList)
y = "3"
while y in str(output): output.remove(y)
print(output)
Но в целом я не могу добиться желаемого результата.
Не могли бы вы предоставить обратную связь?
Было бы очень полезно :)
В вашем случае ваш первый фрагмент был близок к решению вашей проблемы. Единственное, что вы хотели бы сделать, - это изменить условный оператор в соответствии с выражением:
nums = str(input("list element seperated by space: ")).split(" ")
num_list = []
if len(nums) != 1:
num_list = [*(int(num.replace("3", "")) * 3 for num in nums)]
else:
num_list = [nums[0]]
for x in num_list:
if x != 3:
print(str(x).replace("3", "") + " ", end="")
else:
print("0 ", end="")
Если вы введете 11, вы получите 0, и если, например, у вас было 133, вы хотели бы удалить 3, но сохранить 1.
Эта часть вашего вопроса недостаточно ясна/разработана достаточно, поэтому я не включил эту логику в свой фрагмент выше. Поэтому каждый может отредактировать мой ответ и включить его, как только будет указано выше.
[EDIT]: Так что я сделал изменения в своем фрагменте выше. Я не проверял это, поэтому есть вероятность, что он ошибается. Если это так, то сообщите мне о любых конкретных шаблонах/тестах, которые закончились бы как нежелательные.