这是一次学校运动,我也是新手,所以请稍等一下。我有一个图表'fileName'和一个下面的程序输出一个邻接矩阵。矩阵放在如下列表中:
[[0, 1, 1, 0], [1, 0, 1, 1], [1, 1, 0, 0], [0, 1, 0, 0]]
通过这个邻接矩阵,它列出了一个理论上的运动比赛,其中相互比赛的球队被列为'1'而没有被列为'0'的球队。我有另一个文件'fileName2',它列出了一堆团队名称,其中文本文件的每一行都有一个团队名称。我的目标是打印出彼此之间没有比赛的球队的名字。到目前为止,我的代码可以在下面找到(它有很多调试工件,我知道,它很乱):
vertices = int(input('How many vertices are there in the graph?'))
fileName = input("What's the name of the file of graph to read?")
fileName2 = input("What's the name of the file of team names to read?")
f1 = open(fileName, 'r')
f2 = open(fileName2, 'r')
# Create adjacency matrix skeleton for storing later
adjMatrix = [ [0] * vertices for i in range(vertices) ]
# adjMatrix = [[0] * vertices] * vertices
# Looping through the file to obtain the connecting vertices
for line in f1:
line = line.replace('\n', '')
line = line.split(' ')
i = 0
for vert in line:
line[i] = int(vert)
i += 1
j = line[0]
k = line[1]
adjMatrix[j][k] = 1
adjMatrix[k][j] = 1
print(adjMatrix)
# Print out the teams who have yet to play against each other
for m in range(vertices):
# print(adjMatrix[m])
for n in range(vertices):
# print(adjMatrix[m][n])
if m != n and adjMatrix[m][n] == 0:
if m < n:
print(m,n)
t = 0
for team in f2:
if m == t:
print(team)
if n == t:
print(team)
t += 1
# Is this elif statement necessary as we sort through the teams?
elif m > n:
print(n,m)
# for team in f2:
# print(team)
f1.close()
f2.close()
到目前为止,这段代码的问题在于,当从'if m&lt;中调用该代码行时,“for for team in f2”循环不再循环。 n'声明。因此,它只打印出一场尚未上场的比赛,但没有打出另外一场没有比赛的比赛。
应该有两个尚未参与的比赛(0-3和2-3),所以它打印的名称列为0-3但不是2-3。
想知道如何: 1.修复for循环文件'f2'的问题;和 2.改进我到目前为止拼凑的代码。
提前致谢。
注意:我正在使用Python 3.5.3
答案 0 :(得分:0)
当您在文件f2上迭代一次时,您必须将文件倒回以重新开始:
f2.seek(0)