Печатать все остальные строковые символы * Позиция индекса * 2 + 2 - PullRequest
2 голосов
/ 19 марта 2019

Я пытаюсь построить функцию Python, которая возвращает строку, содержащую все остальные символы, дублированные следующим алгоритмом:

Index position * 2 + 2

, например: Testing --> TTssssssiiiiiiiiiigggggggggggggg

Ниже приведен мойкод, но я получаю сообщение об ошибке:

IndexError: строковый индекс выходит за пределы диапазона

Версия A:

def string_expansion(input_string):
i = 0
while i < len(string):
    i += 1
    if input_string[::2] == string[i]:
        return input_string[i] * (i * 2) + 2

вторая версия не возвращает ничего, когда япередать аргумент

Версия B:

def string_expansion(input_string):
i = 0
while i < len(string):
    if input_string[::2] == string[i]:
        return input_string[i] * (i * 2) + 2
    i += 1

Любая помощь будет принята с благодарностью.Спасибо.

Ответы [ 3 ]

0 голосов
/ 19 марта 2019

Я бы сделал это так ...

def string_expansion(input_string):
    return ''.join([e[1]*(e[0]*2+2) for e in enumerate(input_string) if e[0]%2 == 0])

string_expansion('Testing')
'TTssssssiiiiiiiiiigggggggggggggg'
0 голосов
/ 19 марта 2019
def iter_tokens(inp):
    for ind, ch in enumerate(inp):
    if ind % 2 == 0:
        yield ch * (ind * 2 + 2)

# Call this one
def str_exp(inp):
    return ''.join(iter_tokens(inp))
0 голосов
/ 19 марта 2019

Если я правильно понял ваш вопрос, вам нужно создавать и хранить строковые значения во время каждой итерации:

def string_expansion(input_string):
    i = 0
    str=""
    while i < len(input_string):
        str =str+input_string[i] * ((i * 2) + 2)
        i=i+2        
    print(str)
string_expansion("testing")

enter image description here

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