在 for 循环中将字符串递增 1 个字符 (Python 3)

Increment a String by 1 character in for loop (Python 3)

假设我有一个输入字符串 str,我想在每个循环中将它的值增加 1 位,所以 'a'->'b' & 'm'->'n',当它达到 'z' 时,它会增加,如下例所示。

str= "aaaaa"
output= "aaaab"

str="aaaaz"
output="aaaba"

str ="kbzzz"
output="kcaaa"

我希望你明白了,它有点像汽车的里程表。 如何实现这个功能?

一个简单的方法(使用for-else loop):

def increment(s):
    for i in range(len(s)-1, -1, -1):
        if s[i] != "z":
            break
    else:
        return "a" * (len(s) + 1)
    return s[:i] + chr(ord(s[i]) + 1) + "a" * (len(s) - i - 1)

>>> increment("aaaaa")
'aaaab'
>>> increment("aaaab")
'aaaac'
>>> increment("aazz")
'abaa'
  1. 从后面遍历字符串
  2. 停在第一个非“z”
  3. 如果没有找到非“z”,return所有“a”(增加长度)
  4. 否则增加非“z”并将后缀重置为所有“a”

一些文档: