问题描述
制作等比数列的时候,输出时发现了该报错:sequence item 0: expected str instance, int found
a, b, c = 1, 3, 5
ls = []
for i in range(c):
if i == 0:
ls.append(a)
else:
ls.append(a*(b**i))
print(",".join(ls))
错误:
sequence item 0: expected str instance, int found
原因分析:
错误意思:列表中含有数字,不能直接转化成字符串
原因是 .join()方法只能对字符串进行添加操作,所以报错啦!
解决方案:
查了一下资料,提供的解决方案有点麻烦,如下:
a, b, c = 1, 3, 7
ls = []
for i in range(c):
ls.append(a*(b**i))
print(",".join('%s' %id for id in ls))
用的是列表推导式对ls列表遍历,将其转换为字符串。但是我觉得可以在追加元素至列表时将其转换为字符串,如下:
a, b, c = 1, 3, 7
ls = []
for i in range(c):
ls.append(str(a*(b**i)))
print(",".join(ls))