我无法在前导零数字中递增数字。
a = 2
a = ('%02d' % a) #02
a = a + 1
print(a)
代码错误:
TypeError: can only concatenate str (not "int") to str
预期成果:
02
03
04
05
谁能告诉我最好的解决方案。
当你这样做的时候:
a = a + 1
a 是字符串类型。通过添加1
,您将string
和int
类型组合在一起,这在这种意义上是不允许的。
你可以做的是这个(同时保持相同的结构以获得千里眼(
a = 2
b = ('%02d' % a) #02
print(b)
a = a + 1
b = ('%02d' % a) #02
print(b)
#etc.
如果您不想编写所有单独的案例,请考虑使用 for
循环(如其他人提到的(。
您正在混合类型。通过执行a = a + 1
,您正在尝试向string
添加int
。
只需除以 2 个变量:
a = 2
for i in range(4):
a_str = ('%02d' % a)
a = a + 1
print(a_str)
或者,如果您只想打印,甚至可以保存一个变量:
a = 2
for i in range(4):
print('%02d' % a)
a = a + 1
如果这只是一个打印问题,并且前导零微不足道,那么您可以使用如下所示的打印格式("02"是宽度(:
for a in range(1, 12):
print(format(a, "02"))
# output
01
02
03
04
05
06
07
08
09
10
11
答案如下:
举个例子"i",它以 0001 开头,我递增"i",但 python 隐式删除了零我正在使用 for 循环来增加"i"值
length = 4 # number of digits like 0001
for i in range(1,15):
print('0' * (length - len(str(i))) + str(i))
输出将是:
0001, 0002, 0003....0010 and so on
x = 2
x = ('%02d' % x)
print(str(int(x) + 1).zfill(len(x)))
>> '03'
您必须将其保存在字符串中,因为一旦将其转换为 int,它就会去除前导 0,因为拥有这些将使用更多空间来存储对象。
打印一个数字小于 10 时带有前导零的数字,那么您可以这样做:
a = 2
print(('0' if a < 10 else '') + str(a)) # 02