замените вхождение с отдельным номером в каждом цикле - PullRequest
0 голосов
/ 13 октября 2019

Первое вхождение символа в строке будет заменено на 1, второе вхождение - на 2 и т. Д.

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

string=str(input('string: '))
x=input('character: ')
list=[]
for i in range(len(string)):
    if string[i]==x:
        list.append(i)
        Z=str(max(list))
        print(string.replace(x,Z,[::-1]))

вывод должен быть следующим:

строка: Departmentofcomputerscience

символ: e

d1partm2ntofcomput3rsci4nc5

Ответы [ 3 ]

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

Вот еще один способ достижения цели с использованием list и метода replace():

string = str(input('string: '))
x = input('character: ')

list = []

for i in range(len(string)):
    if string[i] == x:
        list.append(i) # add all indexes to replace to the list

if len(list) > 0: 
    j = 0
    for i in range(len(list)):
        j += 1
        string = string.replace(string[list[i]], str(j), 1) # replace the element once at time


print(string)

Для строки: departmentofcomputerscience символ: e

Вывод: d1partm2ntofcomput3rsci4nc5

0 голосов
/ 13 октября 2019
def replace(s, c):
    '''
    @parameter s: input string
    @parameter c: input character to be replaced

    @return s: where every occurence of c is
               replaced by it's nth occurence
    '''

    so = list(s)

    j = 1
    for i in range(len(so)):
        if so[i] == c:
            so[i] = str(j)
            j = j + 1

    return ''.join(so)
0 голосов
/ 13 октября 2019

Вот способ сделать это.

Используйте счетчик для каждого символа в цикле, сохраните значения в списке, затем объедините список. Используйте текущее значение , если оно не равно символу, counter в противном случае:

string=str(input('string: '))
x=input('character: ')
# Use list to store results and a counter
l = [] 
counter = 0

for c in string:
    if c==x:
        counter += 1
        l.append(str(counter))
    else:
        l.append(c)
# Merge the resulting list into string
res = "".join(l)
# Output the result
print(res)

Для входной строки: departmentofcomputerscience

исимвол: e

Вывод d1partm2ntofcomput3rsci4nc5

...