【问题标题】:Multiply char in string by its index number将字符串中的 char 与其索引号相乘
【发布时间】:2019-08-05 10:54:15
【问题描述】:

我必须使用非空字符串作为输入编写一个函数,该函数必须返回每隔一个字符 ([::2]),乘以它的索引 (n) 乘以 2,再加上 2 (2n+2)。 结果应该是这样的: 输入“红色” - 结果“rrrdddddd” 输入“你好” - 结果“hhllllllooooooooo...”

鉴于此前提,我尝试使用范围:

Input_string = ["c","a","m","i","ó","n"]
print(input_string)

for index in range(len(input_string[::2])):

但是之后,我真的不知道如何将“2n+2”应用于每个索引,以及如何将其应用于字符串中的相应字母。

一个失败的试验看起来像这样:

input_string = "camión"
for index in range(len(input_string[::2])):
    n = index
    m = input_string[::2]
    print(n*m)

返回“cmo cmocmocmo”。我希望得到诸如“cccmmmmmmmmoooooooooonnnnnnnnnnn”之类的结果 需要注意的是,在试验中,[::2] 导致索引从 0 到 2 (0, 1, 2),而不是交错的,0, 2, 4 我本来期望的。

有什么建议吗?

【问题讨论】:

  • 请提供两个示例输入及其各自的输出。从您的方程式和输入 red 和输出 rrrdddddd 我似乎无法理解

标签: python function for-loop indexing


【解决方案1】:

我不能完全理解你的例子,

这段代码会给你-

aaaacccccccceeeeeeeeeeeeee

1*2+2 = 4;
3*2 + 2 =8;

考虑到您的字符串从 1 开始

这个输出

str1 = str[::2]
i = 1
for item in str1:
    l = item*i*2
    print(l,end="")
    print(item*2,end="")

    i = i+2

【讨论】:

    【解决方案2】:

    你试过enumerate吗,给定一个列表l=['red', 'black', 'yellow']你可以使用下面的函数

    In[27]: def string_multiplier(l):
       ...:     for i in l:
       ...:         res=''
       ...:         for i,v in enumerate(i[::2]):
       ...:             res += v*(2*i+2)
       ...:         print(res)  
       ...:     
    In[28]: string_multiplier(l)
    rrdddd
    bbaaaakkkkkk
    yylllloooooo
    

    【讨论】:

    • 我得到了以下结果:string_multiplier(l) hh ee ll ll oo
    • @Giparra 我用你的测试字符串 red 复制了它,它起作用了。该函数还需要一个字符串列表而不是字符串,更新了我的答案。
    • 你是对的,它按预期工作,但是分配似乎需要一个索引。
    • @Giparra 分配需要索引?我没有遵循这个。如果它解决了您的问题,请考虑接受答案。
    • 我的意思是,一个范围。但是你的建议帮我解决了这个问题,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2015-07-30
    相关资源
    最近更新 更多