python list TypeError:“int”对象不是iterab

2021-06-14 22:55:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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

脚本应该执行以下场景: 首先,用户给出Perfixes的数量和prog的计数 脚本将计算程序/电话的数量 然后用户将给出每个电话号码 脚本将获取第一个号码并将其写入文件夹123上的文本文件“phone.txt”中,直到达到文件夹的phot计数,然后移动到下一个号码并继续写入下一个文件夹计数。。。等

请检查代码有什么问题

2条回答
网友
1楼 ·

phNums.append(pho)将int添加到列表phNums,然后尝试遍历phNums[i],这是列表中无法执行的每个int,以及获取错误的原因。

直接遍历每个元素:

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

或者查看代码,您可能打算遍历代码中未提供的名称列表。

网友
2楼 ·

这是一个简单的错误,已经得到了充分的回答,所以我不想给你一个直接的答案,而是要指导你完成我的调试过程。希望这能在将来节省时间。

第一步是检查错误发生的位置:

for name in phNums[i]:

好吧,那么错误是什么?

TypeError: 'int' object is not iterable

“for”语句将遍历给定的iterable,通常如下所示:

for _item_ in _iterable_

现在我们知道该看哪部分了。什么类型的phNums[i]phNums在前面定义为列表,但是使用phNums[i],我们希望找到该列表中项目的类型。似乎脚本添加到列表中的唯一时间是添加pho,这是一个int

问题是,你试图遍历一个int项!这个错误现在是有道理的,但我们应该如何解决呢?

注:我试过进一步,但你的描述不清楚。是否希望文件夹结构为:

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

其中phone.txt包含每个电话号码?

相关问题