Python - Как вставить '*' в строку после каждого n-го символа - PullRequest
0 голосов
/ 04 мая 2020

В настоящее время я застрял в этом вопросе, который принимает 2 аргумента (string и int, n), и он должен вернуть новую строку, где после каждого n-го символа (от 0) следует '*'.

Я нашел похожие вопросы о переполнении стека, но ответы включают более продвинутые функции кодирования, которые я не знаю, как использовать (например, range (), emurate et c), так как я только начинал кодировать ,

Что должен делать код:

>>> string_chunks("Once upon a time, in a land far, far away", 5)
'O*nce u*pon a* time*, in *a lan*d far*, far* away*'

Мой код до сих пор печатает только каждый 5-й символ из строки:

def string_chunks(string, x):
    new = ''
    for ch in string[::x]:
        new += ch 
    return new

>>>'Ouae nrry'

Я не уверен если я должен использовать str.find () / str.split () в моем коде. Было бы очень полезно, если бы кто-то помог мне улучшить или направить меня. Спасибо!

Ответы [ 2 ]

2 голосов
/ 04 мая 2020

Ваш пример кажется неуместным. nth позиция означает, что каждый индекс кратен n.

Но, если ваша формулировка неверна, вы всегда можете сдвинуть n или cnt, чтобы убедиться, что она соответствует желаемому результату.

Вы не добавляете ни одного запуска в своей функции, просто проверьте, является ли позиция кратной x, если yes, то добавьте *.

def string_chunks(string, x):
    new = ''
    cnt = 0
    for ch in string:
        if cnt%x==0 and cnt!=0: # checking if cnt is a multiple of x and not 0, we don't want to put star at index 0
            new += '*'
        cnt += 1
        new += ch
    return new
string_chunks("Once upon a time, in a land far, far away", 5)

Out: 'Once *upon *a tim*e, in* a la*nd fa*r, fa*r awa*y'

0 голосов
/ 04 мая 2020
def add_asterisk_every(string, n):
    # Create a list to hold the characters in the new string we'll be creating.
    with_asterisks = []

    # Keep track of how many characters we've passed since the last asterisk was added.
    characters_scanned = 0

    # Iterate through each character of the input string and add each character of the input string to with_asterisks.
    # Once we scan n characters, we'll add an asterisk and restart the counter.
    for character in string:
        if characters_scanned == n:
            with_asterisks.append('*')
            characters_scanned = 0
        characters_scanned += 1
        with_asterisks.append(character)

    # Create the output string from our character list.
    return ''.join(with_asterisks)

print(add_asterisk_every("Once upon a time, in a land far, far away", 5))

Который производит:

Once *upon *a tim*e, in* a la*nd fa*r, fa*r awa*y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...