как не заменить определенные символы в строке в python? - PullRequest
0 голосов
/ 16 июня 2020

Допустим, заменить символы, но не последнюю "4" на "!" в случайной строке. или замените символы, но не среднюю «3» на «@» в случайной строке.

пример 1:

input (hdasd1234)

вывод (!!!!! 1234)

пример 2:

ввод (asadfe455)

output (@@@ dfe @@@)

x = str(input())

y = "!" * (len(x) - 4) + x[-4:]

print(x)

Этот код не работает.

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Для очень простого c прямого решения вы можете сделать следующее:

Пример первый:

string = input() #input automatically returns a string, so there's no need for str()
y = '!' * (len(string)-5) + string[4:]print (y) #remember to print y, not string because y is the modified version of your string

И пример два

string = input()
y = "@" * 3 + string[3:6] + "@" * 3
print (y)

Для более гибкого подхода к этому подходу вы должны создать функцию. Предполагая, что вам даны позиции, в которых следует изменить строку в списке, строку и указанный c маркер для замены string[n], это должно быть довольно просто:

def replace_chars(string, positions, s):
    new_string = []
    for i in range(len(string)):
        if i not in positions: #Checking if position, i, is not one of the marked positions
            new_string.append(string[i])
        else: #If it is a marked positions, append it with the marker, s, or more specifically '@'
            new_string.append(s)
    return ''.join(new_string) #Make the list a string

Это может быть записанной в функции длиной в 1-2 строки с одной строкой для циклов, но такое форматирование лучше для удобства чтения. Но если бы вы сделали это в 1-2 строчки, это выглядело бы так:

def replace_chars(string, positions, s):
    new_string = [string[i] if i not in positions else s for i in range(len(string))]
    return ''.join(new_string)
0 голосов
/ 16 июня 2020

Код печатает значение x, которое не изменяется. Ваш код logi c создает новую переменную y с результатом, а x не изменяется. Однако вы печатаете значение x, которое является точно таким же вводом. Logi c вроде работает, и результат соответствует значению y.

Пожалуйста, проверьте это. Если возникнут проблемы, опубликуйте журнал ошибок или результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...