在 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'
- 从后面遍历字符串
- 停在第一个非“z”
- 如果没有找到非“z”,return所有“a”(增加长度)
- 否则增加非“z”并将后缀重置为所有“a”
一些文档:
假设我有一个输入字符串 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'
- 从后面遍历字符串
- 停在第一个非“z”
- 如果没有找到非“z”,return所有“a”(增加长度)
- 否则增加非“z”并将后缀重置为所有“a”
一些文档: