乐趣区

关于程序员:Python开发时报TypeError-int-object-is-not-iterable解决方式

当咱们编写任何程序时,都会遇到一些谬误,会让咱们有挫败感,所以我有一个解决方案给你。
明天在这篇文章中,咱们将探讨谬误类型 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

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

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 那么您必须查看整个程序并尝试找出您是否尝试应用不可迭代作为可迭代对象。我曾经在下面的例子中展现了最常见的谬误,我也给出了这些问题的解决方案。

本文由博客一文多发平台 OpenWrite 公布!

退出移动版