我正在研究该程序:
for n in range (0,31):
if n%2 is 0:
if (n%2)is 0 and (n%5)is 0:
print(n)
我希望输出在列表中是这样的。
[0,10,20,30]
我试图添加list.append,
hehe = []
for n in range (0,31):
if n%2 is 0:
if (n%2)is 0 and (n%5)is 0:
hehe.append(n)
print(hehe)
但是结果是这样的。
[0]
[0, 10]
[0, 10, 20]
[0, 10, 20, 30]
我如何仅将其设置为[0,10,20,30]?
谢谢。
答案 0 :(得分:1)
由于您的print
位于循环内,因此每次迭代都将其打印出来。您想将打印语句移到末尾。另外,您的第一个if
语句是多余的,因为在第二个语句中再次进行相同的检查,因此可以将其删除:
hehe = []
for n in range(0,31):
if (n%2)==0 and (n%5)==0:
hehe.append(n)
print(hehe)
最后,这种循环是list comprehension的理想选择:
hehe = [n for n in range(0, 31) if (n%2)==0 and (n%5)==0]
print(hehe)
还请注意,您应该使用0
而不是==
来对照is
来检查值,因为这是数字比较。
答案 1 :(得分:1)
由于print(hehe)
位于for循环内,因此每次调用该循环时都会打印出来。
只需在循环hehe
完成后才在循环外部调用它即可。
请注意
[x for x in range(31) if not i % 10] # anything divisible by 2 and 5 is also divisible by 10
更加干净,并且产生与for循环相同的结果。
答案 2 :(得分:0)
这是格式问题。应该是这样的:
hehe = []
for n in range (0,31):
if n%2 is 0:
if (n%2)is 0 and (n%5)is 0:
hehe.append(n)
print(hehe)
您需要将print语句放置在for循环之外,因此不会在每次向hehe
添加数据时都调用它。
答案 3 :(得分:0)
hehe = [i for i in range(31) if i%2 == 0 and i%5 == 0]
或
hehe = [i for i in range(31) if i % 10 == 0]