首頁 > 軟體

Python開發時報TypeError: ‘int‘ object is not iterable錯誤的解決方式

2022-06-02 14:00:26

前言

當我們編寫任何程式時,都會遇到一些錯誤,會讓我們有挫敗感,所以我有一個解決方案給你。 今天在這篇文章中,我們將討論錯誤型別error: 'int' object is not iterable。 我們將討論為什麼會出現此錯誤以及此錯誤的一些可能解決方案。請務必閱讀到最後,以節省大量偵錯此錯誤的時間。

首先,讓我們瞭解“iterable”(可迭代)一詞的含義? 可迭代是我們可以從中獲取值並相應地使用它們的東西。例如,每當我們使用迴圈遍歷列表或元組時,迴圈就作為可迭代物件工作,它一次提供一個元素來處理它。 換句話說,您可以將 iterable 視為一次從中獲取單個專案的容器。它會按照指示提供物品。

例如:

for i in range(5):
print(i)

當我們在終端中執行這段程式碼時,我們會得到輸出:

0

1

2

3

4

在上面的例子中,我們可以看到 range() 函數返回一個數位列表,變數 i 作為一個容器工作。它一次給出一個值並列印它。 現在我們將瞭解為什麼會發生此錯誤,我們將檢查如何消除這些錯誤..

錯誤原因

案例1:

假設您正在編寫一個程式,其中給出了一個火車站名稱列表。您正在嘗試遍歷列表並以大寫順序列印所有站名。您已經使用迴圈來完成這項工作。

例如:

station_names = ['New Delhi', 'Lucknow', 'Patna', 'GorakhPur']
for num in len(station_names):
station_uppercase = station_names[num].upper()
print(station_uppercase)

當我們在終端中執行這個程式時,我們會得到這樣的錯誤。

輸出:

Traceback (most recent call last):

File “c:UsersASUSDesktopGeeksgyan Worktest.py”, line 3, in <module>

for num in len(station_names):
TypeError: ‘int’ object is not iterable

正如在輸出本身中提到的那樣,在第 3 行中我們得到了錯誤。 我們得到這個錯誤是因為我們試圖從一個不可能的整數值中迭代值。我們知道 len() 函數返回一個整數值。所以它不能被迭代來獲取值。我們只能迭代那些應該是容器的專案,這意味著它們包含一堆值,如列表、元組等。

案例2:

假設給定一個字串。我們想改變字元的替代情況。表示交替順序的小寫和大寫。我們將使用迴圈來完成,如下例所示。

例子:

string = 'abcdefghij'
new_string = ''
for char in len(string):
if (char % 2 != 0):
    new_string = new_string + string[char].upper()
else:
    new_string = new_string + string[char]

            print(f"After alternating case changes : {new_string}")

當我們嘗試在終端中執行它時,我們會遇到錯誤:'int' object is not iterable。

輸出:

PS C:UsersASUSDesktopGeeksgyan Work> python -u “c:UsersASUSDesktopGeeksgyan Worktest.py”

Traceback (most recent call last):

File “c:UsersASUSDesktopGeeksgyan Worktest.py”, line 4, in <module>

for char in len(string):
TypeError: ‘int’ object is not iterable

這裡發生了同樣的錯誤,因為我們試圖從一個整數迭代。 有時這些錯誤很難被識別出來,我們花了幾個小時偵錯我們的程式碼來找到錯誤。

錯誤解決方案

我們知道我們收到這個錯誤是因為我們試圖迭代那個不可迭代的物件。所以我們必須做一些可以使該物件可迭代的事情。 我們可以看到,在迴圈中使用 range() 函數解決了錯誤,因為我們知道 range() 函數返回一個容器或事物列表,我們可以在其中一個一個地迭代值,並且可以相應地處理它。 在迴圈中使用 range() 函數後,錯誤將得到解決,我們將能夠成功執行我們的程式,我們將看到所需的輸出。

案例1解決方案:

station_names = ['New Delhi', 'Lucknow', 'Patna', 'GorakhPur']

for num in range(len(station_names)):
station_uppercase = station_names[num].upper()
print(station_uppercase)

輸出:

PS C:UsersASUSDesktopGeeksgyan Work> python -u “c:UsersASUSDesktopGeeksgyan Worktest.py”

New Delhi

Lucknow

Patna

GorakhPur

我們可以看到我們的程式執行成功了。

在我們使用 range 函數之後,它會返回一個可迭代物件,然後我們的 'num' 變數會遍歷該可迭代物件,一次取一個值並將其轉換為大寫,然後列印該值。

這就是可迭代的程式的工作原理。

案例2解決方案:

string = 'abcdefghij'

new_string = ''
for char in range(len(string)):
if (char % 2 != 0):
    new_string = new_string + string[char].upper()
else:
    new_string = new_string + string[char]

            print(f"After alternating case changes : {new_string}")

輸出:

PS C:UsersASUSDesktopGeeksgyan Work> python -u “c:UsersASUSDesktopGeeksgyan Worktest.py”

After alternating case changes : aBcDeFgHiJ

我們可以看到在程式碼中使用 range() 函數後程式執行成功。它消除了錯誤並提供了所需的輸出。 每當出現此錯誤時,您要做的第一件事就是查詢程式中是否存在任何迴圈,嘗試執行程式並檢查是否得到輸出。檢查您是否嘗試迭代無法迭代的值。您會發現錯誤並嘗試使用上述技術解決該錯誤。

結論

每當您收到錯誤 typeerror: int object is not iterable 那麼您必須檢查整個程式並嘗試找出您是否嘗試使用不可迭代作為可迭代物件。我已經在上面的例子中展示了最常見的錯誤,我也給出了這些問題的解決方案。

到此這篇關於Python開發時報TypeError: ‘int‘ object is not iterable錯誤的解決方式的文章就介紹到這了,更多相關Python TypeError: ‘int‘ object is not iterable內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com