def toval(s):
"""Converts an 'azz' string into a number"""
v = 0
for c in s.lower():
v = v * 26 + ord(c) - ord('a')
return v
def tostr(v, minlen=0):
"""Converts a number into 'azz' string"""
s = ''
while v or len(s) < minlen:
s = chr(ord('a') + v % 26) + s
v /= 26
return s
def next(s, minlen=0):
return tostr(toval(s) + 1, minlen)
s = ""
for i in range(100):
s = next(s, 5)
print s
一种不同的、更长的、但可能更具可读性和灵活性的解决方案:
将字符串转换为一个数字,其中每个字母表示以26为底的数字,将数字增加1,然后将数字转换回字符串。这样你就可以对用字母串表示的值进行任意的数学运算。在
“minlen”参数控制结果的位数(因为0==a==aaaaa)。在
在How would you translate this from Perl to Python?处的答案足够吗?不是百分之百的满足你的要求,但是很接近。。。在
我不认为有一个内置函数来做这个。以下措施应该有效:
说明:找到最后一个不是
z
的字符,将其递增,并将其后面的所有字符替换为a
。如果整个字符串是z
,则返回一个长度为1的所有a
的字符串。在相关问题 更多 >
编程相关推荐