Как преобразовать пользовательский ввод в список и удалить все вхождения определенной цифры или символа? - PullRequest
0 голосов
/ 13 октября 2018

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

input("Enter input: ")

опасно и должно использовать вместо него raw_input, но, похоже, не может правильно выполнить эту функцию.

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

отл.ввод 1 2 3 приведет к выводу 6 9 как 1 * 3 = 3, что будет опущено.ех.ввод 2 6 11 приведет к выводу 6 18 как 11 * 3 = 33, и оба значения будут пропущены.

Если, например, пользователь должен был ввести 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)

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

Не могли бы вы оставить отзыв?

Будем весьма признательны:)

1 Ответ

0 голосов
/ 13 октября 2018

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

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.

Эта часть вашего вопроса недостаточно ясна / проработана, поэтому я не включил эту логику в мой фрагмент выше.Таким образом, любой желающий может отредактировать мой ответ и включить его, как только станет ясно, как указано выше.

[РЕДАКТИРОВАТЬ]: Итак, я внес изменения в мой фрагмент выше.Я не проверял это, так что есть шанс, что это не так.Если это так, то сообщите мне о любых конкретных шаблонах / тестах, которые могут закончиться как нежелательные.

...