打印每隔一个字符串*索引位置* 2 + 2

问题描述 投票:2回答:3

我正在尝试构建一个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

当我传递参数时,第二个版本返回none

版本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

任何帮助将不胜感激。谢谢。

python loops
3个回答
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


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'

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))
© www.soinside.com 2019 - 2024. All rights reserved.