[英]Why am I getting TypeError: 'int' object is not iterable in my code?
我正在設計一個程序,該程序可以打印數字的素數。
這是代碼:
while True:
x = int(input("Enter a positive number: "))
if x >= 0:
break
ranger = list(range(1, x+1))
counter = 0
#The first for loop checks if the number is a factor
for i in ranger:
if x % i == 0:
#The second for loop checks if the number is prime
for element in range(1, i+1 ):
if i % element == 0:
counter += 1
if counter == 2:
prime_factors = []
prime_factors += i
#Counter having a value of 2 means the number is prime
print(prime_factors)
我不斷收到錯誤:
Traceback (most recent call last):
File ".\primefactors.py", line 18, in <module>
prime_factors += i
TypeError: 'int' object is not iterable
但我似乎不明白為什么會收到此錯誤。
它應該是prime_factors.append(i)
,因為您使用.append()
添加到list
s,而不是加法運算符:)
( python
如果你試圖將拋出錯誤+
一個list
和int
因為它不可能把它們加起來)
list
添加運算符僅在兩個列表上定義,而不在列表和整數上定義。 Python試圖在prime_factors
和i
上prime_factors
一個list.__add__
,其中包括遍歷i
的元素。 那就是您得到錯誤的地方。
正確的命令是
prime_factors.append(i)
進行此更改后,您的程序將僅正確打印最低質數。 您還需要將初始化和檢查移至正確的位置:
prime_factors
設置為空列表。 counter
設置為0。 counter
的值。 當+=
的左操作數是一個列表時,python期望在右側進行迭代。 您可以改用append
或prime_factors +=[i]
。 同樣,您好像弄亂了標識或其他東西; 您當前的代碼沒有任何意義。 例如,您的prime_factors +=i
行始終prime_factors = []
之前。 如果將+=
替換為append
,那么最后兩行的功能相同,就好像只有一行所說的prime_factors = [i]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.