递增到由零引导的数字

时间:2017-02-15 10:08:17

标签: python numbers

关于将整数转换为由零引导的数字有很多问题,但我找不到任何增加已经由零引导的字符串的解决方案。

Python已经将由0引导的数字转换为普通整数:

>>> 0001
1
>>> int(0001)
1

考虑到这一点,每当我将两个以零为首的数字相加时,我得到一个正常的整数:

>>> 0001 + 0001
2
>>> int('0001') + int('0001')
2

但是,我想要找出的是,例如,如果在向对方添加两个0002时获得0001之类的总和。

显然它应该打印成字符串类型,因为Python将由0引导的数字转换为普通整数。

还请考虑以下情况:

x = 0001

如何在不指定零的情况下将x增加1?

有没有Pythonic方法可以做到这一点?解决方案是否处理由零引导的所有数字情况? ('0001' + '0001' == '0002' and '01' + '01' == '02',例如)。

2 个答案:

答案 0 :(得分:4)

如果字符串具有相同的长度,您可以使用其中一个操作数的长度在输出上简单地应用zfill

def add(x, y) -> str: # remove type hint for Python 2
   return str(int(x) + int(y)).zfill(len(x))

print(add('0001', '0025'))
# '0026'

为了适应不匹配长度的字符串输入,您可以将max(len(x), len(y))传递给zfill,以便使用较长字符串的长度输出零填充

def add(x, y) -> str:
   return str(int(x) + int(y)).zfill(max(len(x), len(y)))

print(add('0001', '25'))
# 0026

答案 1 :(得分:1)

这个怎么样:

x = '00001'
y = '00002'

print '{0:0{width}}'.format(int(x)+int(y), width=max(len(x), len(y)))

打印00003