Как преобразовать пользовательский ввод в список и удалить все вхождения определенной цифры или символа?

1

Я предполагаю, что я решу эту проблему с неправильными углами или не имею надлежащего понимания встроенных функций и синтаксиса для решения моих проблем, несмотря на мои попытки. Я также обнаружил, что:

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)

Но в целом я не могу добиться желаемого результата.

Не могли бы вы предоставить обратную связь?

Было бы очень полезно :)

Теги:
list
type-conversion
raw-input

1 ответ

0

В вашем случае ваш первый фрагмент был близок к решению вашей проблемы. Единственное, что вы хотели бы сделать, - это изменить условный оператор в соответствии с выражением:

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]: Так что я сделал изменения в своем фрагменте выше. Я не проверял это, поэтому есть вероятность, что он ошибается. Если это так, то сообщите мне о любых конкретных шаблонах/тестах, которые закончились бы как нежелательные.

  • 0
    Вывод вашего кода приведет к 111 222 333. С тех пор я отредактировал ОП для ясности.
  • 0
    Отредактированный фрагмент дает мне следующую ошибку: ValueError: неверный литерал для int () с основанием 10: '' при вводе 1 2 3

Ещё вопросы

Сообщество Overcoder
Наверх
Меню