TypeError:类型' int'的参数不是可迭代的模拟器

时间:2016-03-23 14:01:53

标签: python

我正在尝试为DTN网络构建模拟,其目的是读取一个包含3个元素的文件,每个元素代表一个时间,源地址和目标地址。问题是,到目前为止,我有这个代码,我收到一条错误消息。我对python或其他任何编码程序一无所知,我只是按照教程。

import xlsxwriter as xlwt

#xbook = xlwt.Workbook("Test.xlsx")
#xsheet1 = xbook.add_worksheet("singlehop")

base_time =  1390911881273
M = []

def epidemic(_sa, _da):
    global base_time, M
    M = set([_sa])
    for line in open("C:/simulator/new_contact.txt").readlines():
        t, sa, da = line.strip().split()

        if sa in M:
            M.add(da)
            if _da in M:
                return (float(t) - base_time)/1000.0

t = epidemic(1, 10)
print (M)                 
#                  xsheet1.write(a, 0, sa)
#                  xsheet1.write(a, 1, da)
#                  xsheet1.write(a, 2, t)

#xbook.close()

感谢您的帮助,现在我不再有迭代问题了。但是,此代码的结果为M = {1},它不会将跳数从1添加到10。

2 个答案:

答案 0 :(得分:1)

由于错误消息显示错误在第17行,所以让我们检查这一行。

if sa in M:
    m.append(da)

消息说整数不可迭代,你想迭代M.所以M可以是整数吗?

让我们看一下M最后一次更改值的点。

M = (_sa)

如果你使用这个括号[]得到一个列表,那么括号在python中不会有所不同,所以这可能是错误的? _sa是给这个函数的参数,这确实是一个整数,这是不可迭代的。

答案 1 :(得分:0)

首先,您可以将链接放到教程中吗? 其次,我看到了几个错误: 1)m.append(da)不起作用,因为你没有声明m 2)M =(_ sa)是整数而不是集合

从我所看到的,M得1作为整数(不可迭代),但是当它碰到m.append(da)时代码将会失败。