作者nypgand1 (恩歪批居)
看板Python
标题Re: [问题] 如何能做到字母进位呢?
时间Fri Dec 12 14:36:07 2014
想到说如果用「字串 <-> 数字」完全转换会有一个缺点,
要是字串很长,需要进位的情况又不多,那麽就有些浪费
以下是我的小小尝试
大小写保持原位,多进位出来的大小写跟着原本的最高位
def alphaPlusOne(s):
char_list = list(s)
# start from least significant position
for idx, c in enumerate(reversed(char_list)):
if not isCarryAfterPlusOne(c):
# no carry, + 1 and break
char_list[idx] = chr(ord(c) + 1)
break
else:
# carry, + 1 - 26
char_list[idx] = chr(ord(c) + 1 -26)
if idx is 0:
# still need carry at most significant position
char_list.insert(0, chr(ord(c) + 1 -26))
return ''.join(char_list)
def isCarryAfterPlusOne(c):
return c is 'z' or c is 'Z'
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.61.165.30
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Python/M.1418366169.A.59B.html
※ 编辑: nypgand1 (210.61.165.30), 12/12/2014 14:43:14