Как мне перебрать каждый символ в строке и умножить его на место в строке?
Я делаю это упражнение по кодированию на 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
Я уверен, что ты сможешь улучшить это, удачного дня!