Python开发时报TypeError: ‘int‘ object is not iterable错误的解决方式
作者:菜鸟一记 发布时间:2023-08-23 20:30:05
前言
当我们编写任何程序时,都会遇到一些错误,会让我们有挫败感,所以我有一个解决方案给你。 今天在这篇文章中,我们将讨论错误类型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


猜你喜欢
- 在部署一套内网测试环境时,频繁宕机,开机后不断的吃内存,重启apache之后内存占用会不停的上涨,直到swap用完,直到死机,由于是内网环境
- 方法一:torch.nn.DataParallel1. 原理如下图所示:小朋友一个人做4份作业,假设1份需要60min,共需要240min。
- 今年年初,新一季的《最强大脑》开播了,第一集选拔的时候大家做了一个数字游戏,名叫《数字华容道》,当时何猷君以二十几秒的成绩夺得该项目的冠军,
- 在Python的网络编程中,getservbyport()函数和getservbyname()函数是socket模块中的两个函数,因此在使用
- 简介tuple1.元组是以圆括号“()”包围的数据集合,不同成员以“,”分隔。通过下标进行访问2.不可变序列,可以看做不可变的列表,与列表不
- 一、效果展示:1、表单的图片上传项:- 新增时默认一个空白Input框- 更新时展示以往上传存放的图片,- 点击【查看】浏览完整大小- 点击
- 一、分析网页1. 打开网页,在搜索框输入百度翻译并进入百度翻译网站中。F12调出开发者工具,点击Network(网络)\ Fetch/XHR
- 因为这两天在弄自己的一个问答程序www.sosoask.com ,结果发现开发人员把我的存储过程加密了,郁闷,还好找到解决方法了,现在共享下
- 一、python中“::-1”代表什么?在Python中::-1表示将字符或数字倒序输出(也称【反转
- 使用字符串时,常见的操作之一是使用给定的分隔符将字符串拆分为子字符串数组。在本文中,我们将讨论如何在Python中拆分字符串。.split(
- 五花八门的SQL产品多得要命,或许你早顾不得其它甩开袖子就动手干了。但你要同时采用ASP和SQL的话就可能会头晕。MySQL、SQL Ser
- 文章介绍内容:操作MySQL数据库:创建MySQL数据表;向表中插入记录;其他数据库操作。面试题:如何创建MySQL数据表?如何向MySQL
- 同一进程下的多个线程共享内存数据,多个线程之间没有主次关系,相互之间可以操作;cpu执行的都是线程,默认程序会开一个主线程;进程是程序以及和
- 调用JSON.stringify将对象转为对应的字符串时,如果包含时间对象,时间对象会被转换为国家标准时间(ISO),而不是当前国家区域的时
- 实例如下所示:import numpy as npimport pandas as pddata = {'city': [&
- 前言:在 Web 页面经常会有各种事件发生,事件发生后需要进行一些特定处理,即执行特定的函数或者语句。这就需要对事件进行监听,监听事件的常见
- 我们经常会遇到这样的问题你还在为你的MySQL命令模式下,前面的提示信息还是:mysql>,那么我们如何更改mysql命令下提示信息呢
- 需求描述标准网关动态路由功能是重要的一环,将路由、断言以及过滤器信息,持久化到 Mysql 中,通过配置后台页面实现路由、断言、以及过滤器等
- 经常存在在我们的电脑中的垃圾文件主要是指系统在运行过程中产生的tmp临时文件、日志文件、临时备份文件等。垃圾清理器的作用其实也是对这些文件进
- 1、在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。arguments非常类似Arra