我是python的新手,有人可以告诉我这段代码有什么问题:
#!/usr/bin/python
nl=[]
for x in range(1500, 2700):
i=0
if (x%7==0) and (x%5==0):
nl[i]=x
i=i+1
print (','.join(nl))
答案 0 :(得分:1)
除了其他答案中提到的零长度列表问题。您在循环的每次迭代中设置i = 0
。因此,您始终更改列表中的相同元素(第一个元素)。
答案 1 :(得分:0)
您将n
定义为零长度list
,但您在列表末尾之外写入(假定的)元素。
解决此问题的一种方法是将n
的分配更改为:
n = [None]*1200
答案 2 :(得分:0)
您无法将任意索引设置为0长度列表。
使用列表,并附加:
# nl[i]=x <- this won't work
nl.append(x)
由于您在打印时似乎没有使用实际索引,因此这应该可行。请注意,您需要使用
print(",".join(map(str, nl)))
因为加入不会对整合工作。
如果您确实需要索引,我建议您使用字典。
nl = {}
low = 1500
high = 2700
for x in range(low, high):
if (x % 7 == 0) and (x % 5 ==0):
nl[x-low] = x
print(','.join(map(str, nl.values())))
注意此情况下的值不会被排序。如果你想要它们那么你可以对它们进行排序
print(','.join(map(str, sorted(nl.values()))))
此外,您现在可以使用
迭代索引和值(甚至按排序顺序)for index, value in sorted(nl.items()):
答案 3 :(得分:0)
nl=[]
for x in range(1500, 2700):
if (x%7==0) and (x%5==0):
nl.append(str(x))
print (','.join(nl))
答案 4 :(得分:0)
您可以尝试使用列表中的追加方法,而不是使用索引,这在这种情况下非常有用。请尝试以下
nl=[]
for x in range(1500,2700):
if x%7==0 and x%5==0 :
m.append(x)
print(nl)
希望它有所帮助。
答案 5 :(得分:0)
请改用此程序:
nl=[]
for x in range(1500, 2700):
if (x%7==0) and (x%5==0):
nl.append(x)
print nl
它的工作原理如下:
>>> ================================ RESTART ================================
>>>
[1505, 1540, 1575, 1610, 1645, 1680, 1715, 1750, 1785, 1820, 1855, 1890, 1925, 1960, 1995, 2030, 2065, 2100, 2135, 2170, 2205, 2240, 2275, 2310, 2345, 2380, 2415, 2450, 2485, 2520, 2555, 2590, 2625, 2660, 2695]
>>>
代码问题:
nl
)。您必须使用append()
方法追加其长度。,
字符的列表中加入整数。你根本不需要它。打印列表本身。 :)答案 6 :(得分:0)
您已在for循环中设置i = 0
。相反,将其设置在外面并增加。
答案 7 :(得分:0)
此外,在Python中,您可以使用所谓的list comprehension在一行中获得相同的结果:
nl = [x for x in range(1500, 2700) if (x%7==0) and (x%5==0)]
这提供了int
的列表。要打印它,您需要将int
转换为string
:
print(','.join(map(str, nl)))
或者您可以直接创建字符串列表:
nl = [str(x) for x in range(1500, 2700) if (x%7==0) and (x%5==0)]
print(','.join(nl))
如果您只想打印它,一切都可以在一行中完成:
print(','.join(str(x) for x in range(1500, 2700) if (x%7==0) and (x%5==0)))