Как мне перебрать каждый символ в строке и умножить его на место в строке?

Я делаю это упражнение по кодированию на codewars.com и застрял. Я не ищу полного решения. Вместо этого я хочу проверить, верны ли мои рассуждения и возможно ли то, что я пытаюсь сделать.

ВВОД: так что у меня есть строка: «строка». И я хочу напечатать первый символ в этой строке («s») один раз, второй символ в этой строке («t») дважды, третий символ («r») в этой строке три раза и так далее, пока конец строки. ВЫХОД: s-tt-rrr-iiii-nnnnn-gggggg

Единственное, что у меня есть, это перебрать каждый символ в этой строке.

      string = "string"
for char in string: 
print(char, end="-")

вывод: строка-

Решение, которое я имею в виду, - это перебрать каждый символ в строке. Печатать каждый символ * (раз) его место в строке (его порядковый номер) +1

Значение: «S» имеет индекс 0, +1 становится первой буквой, поэтому «s» печатается один раз. «T» находится в индексе 1, +1 становится второй буквой Итак, «t» печатается дважды ...

Затем я попробовал это:

      string = "string"
for char in string: 
print(char * string[char], end="-")

Но это не работает, потому что я получаю TypeError: строковые индексы должны быть целыми числами.

Затем я подумал: можно ли перебрать каждый символ в строке, присвоить его переменной, а затем использовать переменные для выполнения операций? Значение string [0] или «s» станет variable_1 = 1 (первая буква в строке), и я умножу это на первую букву в строке («s»).

Что вы думаете? Может ли это сработать, или мое решение еще далеко?

PS: Я прочитал руководство StackOverflow по заданию вопросов и изо всех сил старался сформулировать свою проблему как можно яснее. Если есть какие-то советы, как сделать это лучше, я буду признателен, если вы поделитесь ими со мной. Я учусь программировать и задавать хорошие вопросы, которые помогают мне в учебе.

Спасибо, что нашли время прочитать мой вопрос. Стэн

3 ответа

Решение

удобно для получения целочисленного индекса и элемента для каждой итерации.

      def f(x):
    size = len(x)
    for i, char in enumerate(x):
        num = i+1       # number of characters
        if num == size: # don't print - after last character
            ending = ""
        else:
            ending = "-"
        print(num*char, end = ending)

f("string")

Твоя логика была немного ошибочна. Если бы мы не использовали enumerate и просто проиндексировали строку целыми числами:

      def g(x):
    size = len(x)
    for i in range(size):
        num = i+1       # number of characters
        if num == size: # don't print - after last character
            ending = ""
        else:
            ending = "-"
        print(num*x[i], end = ending)

Тот же вопрос задавал мне интервьюер. Я пишу этот код вот так

код

      string = "string"
final_data = []
count = 1
for i in list(string):
    final_data.append(i*count)
    count += 1

output = "-".join(final_data)
print(output)

Я понимаю, что вы прочитали руководство по заданию вопросов, я предлагаю только использовать блоки кода.

Я пытался решить вашу проблему, вот мой код

      x = ["string"]

for i in x:
    p = 0
    while p < 6:
        print(i[p]*p)
        p += 1

Это выводит:

      t
rr
iii
nnnn
ggggg

Я уверен, что ты сможешь улучшить это, удачного дня!

Другие вопросы по тегам