我正在尝试为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。
答案 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)时代码将会失败。