关于将整数转换为由零引导的数字有很多问题,但我找不到任何增加已经由零引导的字符串的解决方案。
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'
,例如)。
答案 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