Как заменить строку с несколькими индексами (Python)? - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть строка, и я хочу заменить символы в определенных индексах этой строки. Но я знаю, как заменить символ, только если получил один индекс, используя:

word = word[:pos] + 'X' + word[pos + 1:]

pos в этом случае - индекс. Но когда у меня теперь есть список из нескольких индексов (поэтому pos - это список сейчас), он не работает, потому что индексы слайсов должны быть целыми числами.

string = 'HELLO WORLD'
secretword = ''.join('_' for c in string)

while True:
    userinput = input("Give me a letter\n").upper()
    if len(userinput) == 1:
        if userinput in string:
            pos = [i for i in range(len(string)) if string[i] == userinput]
            secretword = secretword[:pos] + userinput + secretword[pos + 1:] #this does not work
            print(secretword)

Ответы [ 2 ]

2 голосов
/ 13 апреля 2020

Я должен сказать, что ваш код немного неуклюж и труден для понимания.

Но если вы хотите применить ту же операцию к списку индексов, то просто переберите свой список индексов и примените то же самое logi c:

pos_list = [i for i in range(len(string)) if string[i] == userinput]
for pos in pos_list:
    word = word[:pos] + 'X' + word[pos + 1:]
0 голосов
/ 13 апреля 2020

Вы можете просто перебрать массив:

while True:
    userinput = input("Give me a letter\n").upper()
    if len(userinput) == 1:
        if userinput in string:
            pos = [i for i in range(len(string)) if string[i] == userinput]
            for p in pos:
                secretword = secretword[:p] + userinput + secretword[p+1:]
            print(secretword)
...