打印所有其他字符串字符*索引位置* 2 + 2

时间:2019-03-19 02:59:20

标签: python loops

我正在尝试构建一个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 :(得分:0)

如果我正确回答了您的问题,则需要在每次迭代期间构建并存储字符串值:

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

答案 1 :(得分:0)

我会这样...

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'

答案 2 :(得分:0)

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))