我的范围是10-20,我想在每个数字之间添加一个0,例如:
范围(10,15)返回10,11,12,13,14
我希望它循环并返回1000,1010,1020,1030和1040。
我试过了:
a = range(10,20)
for i in a:
i.append(0)
print (i)
没有运气。错误消息说:
i.append(0)
AttributeError: 'int' object has no attribute 'append'
我做错了什么?感谢。
答案 0 :(得分:4)
您正在尝试将字符串添加到您不能的数字中。您应该首先将数字转换为字符串。
[int('0'.join(str(i))+'0') for i in range(10, 20)]
答案 1 :(得分:1)
正如Tim Pietczker在他的评论中提到的(这更像是一个答案),你不需要坚持一个增量的范围。你可以简单地说:
a = range(1000,2000,10)
但是,原始代码可以修改如下:
a = range(10,20)
for i in a:
si=str(i) # convert your i integer to si string
newsi='' # initalize a new empty string
for letter in si: # loop through your string of digits
newsi+=letter # add the oncoming digit to the new string
newsi+=0 # add a 0 to the new string
newi=int(newsi) # convert your new string to integer
print newi
答案 2 :(得分:1)
此任务可以使用字符串解决(此处隐式附加0)或将此问题保留在整数域中。将任一方法构建为函数,然后使用列表推导或内置map
将0添加到您范围内的每个项目。
选项1:转换为字符串,添加0,转换回整数
int(''.join((s+'0' for s in str(13)))
选项2:保持整数域
result = 0
digit = 0
num = 14
while num>1:
result += 10**(2*digit) * (num % 10)
num //= 10 # integer division
digit += 1
return result
您是否有机会寻找range(1000, 1050, 10)
,其值为1000, 1010, 1020, 1030, 1040
?