Как увеличить значение с помощью ведущих нулей?

Каким будет лучший способ увеличить значение, содержащее ведущие нули? Например, я хотел бы увеличить «00000001». Однако следует отметить, что число ведущих нулей не будет превышать 30. Таким образом, могут быть такие случаи, как «0000012», «00000000000000099» или «000000000000045».

Я могу подумать о нескольких путях, но я хочу посмотреть, кто-то придумает что-то пятно.

Используйте сильно упущенную str.zfill ():

str(int(x) + 1).zfill(len(x)) 
 int('00000001') + 1 

если вы хотите вернуть нули:

 "%08g" % (int('000000001') + 1) 

"%% 0% ii"% len (x)% (int (x) +1)

– MarkusQ

PS При x = "0000034" он разворачивается так:

 "%%0%ii" % len("0000034") % (int("0000034")+1) "%%0%ii" % 7 % (34+1) "%07i" % 35 "0000035" 

Предположительно, вы конкретно подразумеваете целое число, представленное в виде строки с ведущими нулями?

Если это так, я бы сделал это так:

 >>> a '00000000000000099' >>> l = len(a) >>> b = int(a)+1 >>> b 100 >>> ("%0"+"%dd" % l) % b '00000000000000100' 

Определите длину, преобразуйте ее в целое число, увеличьте ее, а затем преобразуйте обратно в строку с ведущими нулями, чтобы она имела ту же длину, что и раньше.

Сохраните свой номер как целое число. Когда вы хотите распечатать его, добавьте начальные нули. Таким образом, вы можете легко выполнять математику без конверсий, и это упрощает процесс мышления.

«мой код находится в 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[ik]==10) { a[i-(k+1)]++; a[ik]=0; } } 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[ik]==10) { a[i-(k+1)]++; a[ik]=0; } } в 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[ik]==10) { a[i-(k+1)]++; a[ik]=0; } }