0

我在 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 indices must be integers。

然后我在想:是否可以遍历字符串中的每个字符,将其分配给变量,然后使用变量进行操作?含义 string[0] 或“s”将变为 variable_1 = 1(字符串中的第一个字母),我将其乘以字符串中的第一个字母(“s”)。

你怎么看?这可以工作还是我的解决方案有问题?

PS:我通读了 StackOverflow 的提问指南,并尽我所能尽可能清楚地表述我的问题。如果有任何关于做得更好的提示,如果您能与我分享,我将不胜感激。我正在学习如何编程以及如何提出有益于我学习的好问题。

感谢您花时间阅读我的问题。斯坦

4

3 回答 3

1

enumerate便于每次迭代获取整数索引和元素。

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)
于 2021-10-31T13:20:03.607 回答
1

面试官也问了我同样的问题。我这样写这段代码

代码

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

output = "-".join(final_data)
print(output)
于 2021-10-31T13:28:33.237 回答
0

我了解到您已阅读有关提问的指南,我唯一的建议是使用代码块。

我试图解决你的问题,这是我的代码

x = ["string"]

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

这输出:

t
rr
iii
nnnn
ggggg

我相信你可以改进这一点,祝你有美好的一天!

于 2021-10-31T13:29:29.107 回答