【发布时间】:2018-01-02 04:29:50
【问题描述】:
这真的很奇怪,请在下面的代码 sn-p 处循环,当我删除 num=i 时,一切正常,但它会导致迭代问题。
错误代码
In [17]: prim_list=[]
...: for i in range(2,101):
...: print i
...: num=i,count=0 # line with issue
...: for j in range(1,i/2):
...: div=j
...: if(num%div==0):
...: count=count+1
...: if(count==1):
...: prim_list.append(num)
...:
2
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-17-a8dd2a52322e> in <module>()
2 for i in range(2,101):
3 print i
----> 4 num=i,count=0
5 for j in range(1,i/2):
6 div=j
TypeError: 'int' object is not iterable
工作正常
In [19]: prim_list=[]
...: for i in range(2,101):
...: count=0 # notice num=i assignment is removed
...: for j in range(1,i/2):
...: div=j
...: if(num%div==0):
...: count=count+1
...: if(count==1):
...: prim_list.append(num)
...: print "done"
...:
done
我不明白的是为什么赋值导致循环迭代错误!!??
感谢任何帮助!
【问题讨论】:
-
num=i,count=0是单个语句,表示num=(i,count)=0。解包赋值不适用于整数。 -
@MartijnPieters 可能是我把问题放错了,但我肯定想理解它抛出的错误,python 是如何在内部做的,赋值和错误语句不匹配!!
标签: python loops variable-assignment