增加包含前导零的值的最佳方法是什么?例如,我想增加“00000001”。但是,应该注意的是,前导零的数量不会超过30.因此可能会出现“0000012”,“00000000000000099”或“000000000000045”等情况。
我可以想到几种方法,但我想知道是否有人想出一些光滑的东西。
答案 0 :(得分:26)
使用备受忽视的str.zfill():
str(int(x) + 1).zfill(len(x))
答案 1 :(得分:8)
int('00000001') + 1
如果你想要返回前导零:
"%08g" % (int('000000001') + 1)
答案 2 :(得分:8)
“%% 0%ii”%len(x)%(int(x)+1)
- MarkusQ
P.S。对于x =“0000034”,它会像这样展开:
"%%0%ii" % len("0000034") % (int("0000034")+1)
"%%0%ii" % 7 % (34+1)
"%07i" % 35
"0000035"
答案 3 :(得分:2)
据推测,您具体是指一个整数,表示为带前导零的字符串?
如果是这样的话,我会这样做:
>>> a
'00000000000000099'
>>> l = len(a)
>>> b = int(a)+1
>>> b
100
>>> ("%0"+"%dd" % l) % b
'00000000000000100'
答案 4 :(得分:1)
确定长度,将其转换为整数,递增,然后将其转换回前导零的字符串,使其长度与以前相同。
答案 5 :(得分:1)
将您的号码存储为整数。如果要打印它,请添加前导零。通过这种方式,您可以在不进行转换的情况下轻松完成数学运算,并简化了思维过程。
答案 6 :(得分:-1)
“我的代码在c”
int a[6]={0,0,0,0,0,0},i=5,k,p;
while(a[0]!=10)
{
do
{
for(p=0;p<=i;p++)
printf("%d",a[p]);
printf("\n");
delay(100);
a[i]++;
}while(a[i]!=10);
for(k=0;k<=i;k++)
if(a[i-k]==10)
{
a[i-(k+1)]++;
a[i-k]=0;
}
}