递增到以零开头的数字

She*_*Rox 1 python numbers

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

Python 已经将数字以零为单位转换为正常整数:

>>> 0001
1
>>> int(0001)
1
Run Code Online (Sandbox Code Playgroud)

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

>>> 0001 + 0001
2
>>> int('0001') + int('0001')
2
Run Code Online (Sandbox Code Playgroud)

但是,我想知道的是,例如,如何获得总和,例如0002将两个相加时0001

显然它应该打印为字符串类型,因为 Python 将数字以零为首的数字转换为普通整数。

还请考虑这样的一些情况:

x = 0001

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


有没有 Pythonic 的方法来做到这一点?解决方案适用于所有以零为首的数字情况?('0001' + '0001' == '0002' and '01' + '01' == '02',例如)。

Mos*_*oye 5

如果字符串具有相同的长度,您可以简单地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'
Run Code Online (Sandbox Code Playgroud)

为了适应长度不匹配的字符串输入,您可以传递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
Run Code Online (Sandbox Code Playgroud)