網站首頁 編程語言 正文
前言
當我們編寫任何程序時,都會遇到一些錯誤,會讓我們有挫敗感,所以我有一個解決方案給你。 今天在這篇文章中,我們將討論錯誤類型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:\Users\ASUS\Desktop\Geeksgyan Work\test.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:\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
這里發生了同樣的錯誤,因為我們試圖從一個整數迭代。 有時這些錯誤很難被識別出來,我們花了幾個小時調試我們的代碼來找到錯誤。
錯誤解決方案
我們知道我們收到這個錯誤是因為我們試圖迭代那個不可迭代的對象。所以我們必須做一些可以使該對象可迭代的事情。 我們可以看到,在循環中使用 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:\Users\ASUS\Desktop\Geeksgyan Work> python -u “c:\Users\ASUS\Desktop\Geeksgyan Work\test.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:\Users\ASUS\Desktop\Geeksgyan Work> python -u “c:\Users\ASUS\Desktop\Geeksgyan Work\test.py”
After alternating case changes : aBcDeFgHiJ
我們可以看到在代碼中使用 range() 函數后程序運行成功。它消除了錯誤并提供了所需的輸出。 每當出現此錯誤時,您要做的第一件事就是查找程序中是否存在任何循環,嘗試運行程序并檢查是否得到輸出。檢查您是否嘗試迭代無法迭代的值。您會發現錯誤并嘗試使用上述技術解決該錯誤。
結論
每當您收到錯誤 typeerror: int object is not iterable 那么您必須檢查整個程序并嘗試找出您是否嘗試使用不可迭代作為可迭代對象。我已經在上面的例子中展示了最常見的錯誤,我也給出了這些問題的解決方案。
原文鏈接:https://blog.csdn.net/qq_43658454/article/details/122867622
相關推薦
- 2022-06-09 使用Ajax實現進度條的繪制_AJAX相關
- 2023-11-26 數據結構:數組—特殊矩陣的壓縮存儲
- 2022-08-23 構建?Python?命令行參數的?4?種常見方式_python
- 2022-11-07 PostgreSQL長事務概念解析_PostgreSQL
- 2022-11-05 React+CSS?實現繪制豎狀柱狀圖_React
- 2022-09-25 spring如何解決循環依賴
- 2022-06-29 基于C++實現五子棋小游戲_C 語言
- 2022-02-25 Oracle工具PL/SQL的基本語法_oracle
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支