Умножить символ в строке на его порядковый номер - PullRequest
1 голос
/ 14 марта 2019

Мне нужно закодировать функцию с непустой строкой в ​​качестве ввода, которая должна возвращать каждый второй символ ([::2]), умноженный на его индекс (n), умноженный на 2, плюс 2 (2n+2). Результаты должны быть примерно такими: input "red" - результат "rrrdddddd" input "hello" - результат "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". Я ожидаю такой результат, как "cccmmmmmmmmoooooooooonnnnnnnnnnnn" Следует отметить, что в испытании [:: 2] приводит к индексам от 0 до 2 (0, 1, 2), а не в шахматном порядке, 0, 2, 4 Я бы ожидал.

Есть предложения?

Ответы [ 3 ]

1 голос
/ 14 марта 2019

Вы пробовали 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
0 голосов
/ 14 марта 2019

Я не могу полностью понять ваш пример,

этот код даст вам -

aaaacccccccceeeeeeeeeeee

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
0 голосов
/ 14 марта 2019

Пожалуйста, попробуйте это решение:

test_string = "abcd"
def my_method(_string):
    result = ""
    for i in range(len(_string)):
        result+=_string[i]*(2*i+2)
    return result
my_method(test_string)

Результат: 'aabbbbccccccdddddddd'

...