python 列表类型错误:'int'对象不可迭代

0 投票
2 回答
6536 浏览
提问于 2025-04-28 11:21

我写了这个Python代码,但有很多错误,我希望你能帮我检查一下,因为我刚学Python。

for i in range(phones):
    pho = int(raw_input( "Phone Number %d : " % (i+1)))
    phNums.append(pho)
    for name in range(phot):
        name1 = '{0}/phone.txt'.format(pathname)
        file = open(name1, 'w')
        file.write = (pho)
        file.close()

第一个问题是,当我运行这个脚本时,出现了这个错误:

Traceback (most recent call last):
    file.write = (pho)
AttributeError: 'file' object attribute 'write' is read-only

这个脚本应该完成以下操作: 首先,用户输入前缀的数量和程序的数量。 然后,脚本会计算出“phot”,也就是程序/电话的数量。 接着,用户会输入每个电话号码。 脚本会先取第一个号码,把它写入名为“phone.txt”的文本文件中,文件会放在1、2、3这些文件夹里,直到达到“phot”文件夹的数量,然后再处理下一个号码,继续写入下一个文件夹的数量,依此类推……

请帮我检查一下代码有什么问题。

暂无标签

2 个回答

0

这是一个简单的错误,之前已经有很多人回答过了。所以我不打算直接告诉你答案,而是想带你走一遍我的调试过程。希望这样能在将来节省一些时间。

第一步是检查错误发生的地方:

for name in phNums[i]:

好的,那么错误是什么呢?

TypeError: 'int' object is not iterable

“for”语句会遍历一个可迭代的对象,通常是这样的:

for _item_ in _iterable_

现在我们知道要关注哪一部分代码了。phNums[i] 的类型是什么呢? phNums 在之前定义为一个列表,但我们想知道的是这个列表里每个项目的类型。看起来这个脚本只有在添加 pho 时才会往列表里加东西,而 pho 是一个整数。

问题就出在这里,你试图遍历一个整数项!现在这个错误就明白了,但我们该怎么修复呢?

注意:我试着往下看,但你的描述不太清楚。你想要的文件夹结构是:

1/phone.txt
2/phone.txt
3/phone.txt

其中 phone.txt 每个文件里都包含一个电话号码?

0

phNums.append(pho) 是把整数添加到你的列表 phNums 中,然后你尝试用 phNums[i] 来遍历这个列表里的每个整数,但这样做是行不通的,所以你会遇到错误。

你可以直接遍历每个元素:

for i in phNums:
    name = '{}phone.txt'.format(i) # i is an int so use str.format to concat

或者从你的代码来看,你可能是想遍历一个没有在代码中提供的名字列表。

撰写回答