【问题标题】:How can I make the code print out every nth character of a string如何使代码打印出字符串的每个第 n 个字符
【发布时间】:2021-11-04 13:43:17
【问题描述】:

所以我试图找到如何让我的代码打印出给定列表中的每个 n: int 术语,这是我的代码

text = 'monosodium glutamate'
def GetNthLetters(text, n: int):
    builtstring = ""
    for index, letter in enumerate(text):
        if index % n == 0:
            builtstring = builtstring + letter
    return builtstring
print(GetNthLetters(text, 7))

所以现在我的代码成功地打印出字符串的每第七个术语,例如,在提供的字符串 text = 'monosodium glutamate' 中,字符串中的每 7 个术语是 mit. 但我想让我的代码每 6 个打印一次,每个第 5 个以此类推,直到第 1 个字符,然后从第 n 个字符到第 1 个字符按顺序排列。

所以基本上,我想做的是确保输入是否是

text = 'monosodium glutamate', n = 7 

输出应该是

'mitouanmmo asgtoledu'

因为它打印字符串的每 7 个字符,然后每 6 个字符,然后每 5 个字符,以此类推。我需要对我的代码进行哪些更改?

【问题讨论】:

    标签: python list tuples


    【解决方案1】:

    最简单的方法是只使用具有交错起始索引和步幅n 的切片。然后str.join他们一起:

    def GetNthLetters(text, n: int):
        return "".join(text[i::n] for i in range(n))
    
    GetNthLetters("monosodium glutamate", 7)
    # 'mitouanmmo asgtoledu'
    

    如果您想“手动”实现:

    def GetNthLetters(text, n: int):
        builtstring = ""
        for i in range(n):  # starting points: 0123456
            while i < len(text):  # 0,7,14 -> 1,8,15 -> 2,9,16 ...
                builtstring += text[i]   
                i += n
        return builtstring
    

    【讨论】:

    • 我添加了这样一个简单的方法。
    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多