【问题标题】:How do I iterate over every character in a string and multiply it with the place in its string?如何遍历字符串中的每个字符并将其与字符串中的位置相乘?
【发布时间】:2021-12-15 14:39:54
【问题描述】:

我在 codewars.com 上做这个编码练习,但我被困住了。我不是在寻找一个完整的解决方案。相反,我想看看我的推理是否正确,以及我正在尝试做的事情是否可行。

输入:所以我有一个字符串:“字符串”。 我想打印这个字符串中的第一个字符(“s”)一次, 此字符串中的第二个字符 ("t") 两次, 此字符串中的第三个字符(“r”)三次, 以此类推,直到字符串结束。 输出:s-tt-rrr-iiii-nnnnn-gggggg

到目前为止,我唯一要做的就是遍历这个字符串中的每个字符。

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

输出:s-t-r-i-n-g-

我想到的解决方案是 遍历字符串中的每个字符 打印每个字符 *(次)他在字符串中的位置(其索引号)+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 的提问指南,并尽我所能尽可能清楚地表述我的问题。如果有任何关于做得更好的提示,如果您能与我分享,我将不胜感激。我正在学习如何编程以及如何提出有益于我学习的好问题。

感谢您抽出宝贵时间阅读我的问题。 斯坦

【问题讨论】:

    标签: python string iteration string-iteration


    【解决方案1】:

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

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

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

    这个输出:

    t
    rr
    iii
    nnnn
    ggggg
    

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

    【讨论】:

    • 感谢您的回复和建议,我编辑了我的问题。
    【解决方案2】:

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

    代码

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

    【讨论】:

      【解决方案3】:

      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)
      

      【讨论】:

      • 谢谢!使用您的第二个解决方案,我能够看到我在推理中遗漏了什么。我现在正在检查枚举,我还不知道那个。
      猜你喜欢
      • 2015-03-30
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多