簡體   English   中英

為什么我收到TypeError:“ int”對象在我的代碼中無法迭代?

[英]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如果你試圖將拋出錯誤+一個listint因為它不可能把它們加起來)

list添加運算符僅在兩個列表上定義,而不在列表和整數上定義。 Python試圖在prime_factorsiprime_factors一個list.__add__ ,其中包括遍歷i的元素。 那就是您得到錯誤的地方。

正確的命令是

prime_factors.append(i)

進行此更改后,您的程序將僅正確打印最低質數。 您還需要將初始化和檢查移至正確的位置:

  • 僅在程序開始時將prime_factors設置為空列表。
  • 對於每個可疑素因數,將counter設置為0。
  • 在查看了所有較小的數字 ,才檢查counter的值。

+=的左操作數是一個列表時,python期望在右側進行迭代。 您可以改用appendprime_factors +=[i] 同樣,您好像弄亂了標識或其他東西; 您當前的代碼沒有任何意義。 例如,您的prime_factors +=i行始終prime_factors = []之前。 如果將+=替換為append ,那么最后兩行的功能相同,就好像只有一行所說的prime_factors = [i]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM