Python開發(fā)時(shí)報(bào)TypeError:?‘int‘?object?is?not?iterable錯(cuò)誤的解決方式
前言
當(dāng)我們編寫任何程序時(shí),都會(huì)遇到一些錯(cuò)誤,會(huì)讓我們有挫敗感,所以我有一個(gè)解決方案給你。 今天在這篇文章中,我們將討論錯(cuò)誤類型error: 'int' object is not iterable。 我們將討論為什么會(huì)出現(xiàn)此錯(cuò)誤以及此錯(cuò)誤的一些可能解決方案。請務(wù)必閱讀到最后,以節(jié)省大量調(diào)試此錯(cuò)誤的時(shí)間。
首先,讓我們了解“iterable”(可迭代)一詞的含義? 可迭代是我們可以從中獲取值并相應(yīng)地使用它們的東西。例如,每當(dāng)我們使用循環(huán)遍歷列表或元組時(shí),循環(huán)就作為可迭代對象工作,它一次提供一個(gè)元素來處理它。 換句話說,您可以將 iterable 視為一次從中獲取單個(gè)項(xiàng)目的容器。它會(huì)按照指示提供物品。
例如:
for i in range(5): print(i)
當(dāng)我們在終端中運(yùn)行這段代碼時(shí),我們會(huì)得到輸出:
0
1
2
3
4
在上面的例子中,我們可以看到 range() 函數(shù)返回一個(gè)數(shù)字列表,變量 i 作為一個(gè)容器工作。它一次給出一個(gè)值并打印它。 現(xiàn)在我們將了解為什么會(huì)發(fā)生此錯(cuò)誤,我們將檢查如何消除這些錯(cuò)誤..
錯(cuò)誤原因
案例1:
假設(shè)您正在編寫一個(gè)程序,其中給出了一個(gè)火車站名稱列表。您正在嘗試遍歷列表并以大寫順序打印所有站名。您已經(jīng)使用循環(huán)來完成這項(xiàng)工作。
例如:
station_names = ['New Delhi', 'Lucknow', 'Patna', 'GorakhPur'] for num in len(station_names): station_uppercase = station_names[num].upper() print(station_uppercase)
當(dāng)我們在終端中運(yùn)行這個(gè)程序時(shí),我們會(huì)得到這樣的錯(cuò)誤。
輸出:
Traceback (most recent call last):
File “c:\Users\ASUS\Desktop\Geeksgyan Work\test.py”, line 3, in <module>
for num in len(station_names):
TypeError: ‘int’ object is not iterable
正如在輸出本身中提到的那樣,在第 3 行中我們得到了錯(cuò)誤。 我們得到這個(gè)錯(cuò)誤是因?yàn)槲覀冊噲D從一個(gè)不可能的整數(shù)值中迭代值。我們知道 len() 函數(shù)返回一個(gè)整數(shù)值。所以它不能被迭代來獲取值。我們只能迭代那些應(yīng)該是容器的項(xiàng)目,這意味著它們包含一堆值,如列表、元組等。
案例2:
假設(shè)給定一個(gè)字符串。我們想改變字符的替代情況。表示交替順序的小寫和大寫。我們將使用循環(huán)來完成,如下例所示。
例子:
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}")
當(dāng)我們嘗試在終端中運(yùn)行它時(shí),我們會(huì)遇到錯(cuò)誤:'int' object is not iterable。
輸出:
PS C:\Users\ASUS\Desktop\Geeksgyan Work> python -u “c:\Users\ASUS\Desktop\Geeksgyan Work\test.py”
Traceback (most recent call last):
File “c:\Users\ASUS\Desktop\Geeksgyan Work\test.py”, line 4, in <module>
for char in len(string):
TypeError: ‘int’ object is not iterable
這里發(fā)生了同樣的錯(cuò)誤,因?yàn)槲覀冊噲D從一個(gè)整數(shù)迭代。 有時(shí)這些錯(cuò)誤很難被識別出來,我們花了幾個(gè)小時(shí)調(diào)試我們的代碼來找到錯(cuò)誤。
錯(cuò)誤解決方案
我們知道我們收到這個(gè)錯(cuò)誤是因?yàn)槲覀冊噲D迭代那個(gè)不可迭代的對象。所以我們必須做一些可以使該對象可迭代的事情。 我們可以看到,在循環(huán)中使用 range() 函數(shù)解決了錯(cuò)誤,因?yàn)槲覀冎?range() 函數(shù)返回一個(gè)容器或事物列表,我們可以在其中一個(gè)一個(gè)地迭代值,并且可以相應(yīng)地處理它。 在循環(huán)中使用 range() 函數(shù)后,錯(cuò)誤將得到解決,我們將能夠成功運(yùn)行我們的程序,我們將看到所需的輸出。
案例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:\Users\ASUS\Desktop\Geeksgyan Work> python -u “c:\Users\ASUS\Desktop\Geeksgyan Work\test.py”
New Delhi
Lucknow
Patna
GorakhPur
我們可以看到我們的程序運(yùn)行成功了。
在我們使用 range 函數(shù)之后,它會(huì)返回一個(gè)可迭代對象,然后我們的 'num' 變量會(huì)遍歷該可迭代對象,一次取一個(gè)值并將其轉(zhuǎn)換為大寫,然后打印該值。
這就是可迭代的程序的工作原理。
案例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:\Users\ASUS\Desktop\Geeksgyan Work> python -u “c:\Users\ASUS\Desktop\Geeksgyan Work\test.py”
After alternating case changes : aBcDeFgHiJ
我們可以看到在代碼中使用 range() 函數(shù)后程序運(yùn)行成功。它消除了錯(cuò)誤并提供了所需的輸出。 每當(dāng)出現(xiàn)此錯(cuò)誤時(shí),您要做的第一件事就是查找程序中是否存在任何循環(huán),嘗試運(yùn)行程序并檢查是否得到輸出。檢查您是否嘗試迭代無法迭代的值。您會(huì)發(fā)現(xiàn)錯(cuò)誤并嘗試使用上述技術(shù)解決該錯(cuò)誤。
結(jié)論
每當(dāng)您收到錯(cuò)誤 typeerror: int object is not iterable 那么您必須檢查整個(gè)程序并嘗試找出您是否嘗試使用不可迭代作為可迭代對象。我已經(jīng)在上面的例子中展示了最常見的錯(cuò)誤,我也給出了這些問題的解決方案。
到此這篇關(guān)于Python開發(fā)時(shí)報(bào)TypeError: ‘int‘ object is not iterable錯(cuò)誤的解決方式的文章就介紹到這了,更多相關(guān)Python TypeError: ‘int‘ object is not iterable內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Python文本生成的Beam?Search解碼問題
這篇文章主要介紹了Python文本生成的Beam?Search解碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07利用Python自動(dòng)監(jiān)控網(wǎng)站并發(fā)送郵件告警的方法
這篇文章介紹的是通過定時(shí)執(zhí)行python腳本,可以實(shí)現(xiàn)定期批量訪問網(wǎng)站,如果發(fā)現(xiàn)網(wǎng)站打不開,第一時(shí)間發(fā)郵件到管理員郵箱進(jìn)行預(yù)警。有需要的可以參考借鑒。2016-08-08python 使用pygame工具包實(shí)現(xiàn)貪吃蛇游戲(多彩版)
這篇文章主要介紹了python 使用pygame工具包實(shí)現(xiàn)貪吃蛇游戲,本篇給大家分享的是一個(gè)多彩版,通過實(shí)例代碼給大家講解,非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10Python3 多線程(連接池)操作MySQL插入數(shù)據(jù)
本文將結(jié)合實(shí)例代碼,介紹Python3 多線程(連接池)操作MySQL插入數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06Python+Appium實(shí)現(xiàn)自動(dòng)化測試的使用步驟
這篇文章主要介紹了Python+Appium實(shí)現(xiàn)自動(dòng)化測試的使用步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Jupyter notebook 啟動(dòng)閃退問題的解決
這篇文章主要介紹了Jupyter notebook 啟動(dòng)閃退問題的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04檢測tensorflow是否使用gpu進(jìn)行計(jì)算的方式
今天小編就為大家分享一篇檢測tensorflow是否使用gpu進(jìn)行計(jì)算的方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02