为什么部分代码不参与执行过程

2024-10-04 15:30:15 发布

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

我试图根据节点的度数将网络分为两组(g1和g2)(如果节点度数d>;=691,则节点是g1中的外接节点,否则节点是g2中的外接节点)

import networkx as nx
import random
import numpy as np
import os
import sys
from networkx.algorithms.assortativity.mixing import degree_mixing_matrix # \attribute_mixing_matrix, numeric_mixing_matrix
from networkx.algorithms.assortativity.pairs import node_degree_xy #, \node_attribute_xy

from operator import itemgetter
from networkx.exception import NetworkXError
import networkx.convert as convert

g = nx.read_edgelist('/home/suman/Desktop/dataset/Email-Enron.txt',create_using=None,nodetype=int,edgetype=int)

s=sorted(g.degree_iter(),key= itemgetter(1),reverse=True)



perc=1
def modify_nw_random(g,perc):

while(perc<=100):
    ntm = round((float(perc)/100)*len(g))
    #print ntm    
    while(ntm != 0):
        v = random.randrange(1,len(g))
        print"node:", v
        d=g.degree(v)
        print"degree:", d

        g1=nx.Graph()
        g2=nx.Graph()

        if g.has_node(v) and (d>=691):

                g1.add_node(v)

        else:
               g2.add_node(v)

        g.remove_node(v)     
        ntm = ntm-1
        if(ntm<=0):break

    perc=perc+1
    print "perc:",perc
    if(perc>100):break

    N1=nx.number_of_nodes(g1)
    print N1
    r2=nx.degree_assortativity_coefficient(g1)
    print ("%f"%r2)        

    N2=nx.number_of_nodes(g2)
    print N2
    r3=nx.degree_assortativity_coefficient(g2)
    print ("%f"%r3)                 

 modify_nw_random(g,perc)

这里,当perc=1时执行第一个循环,然后perc增加1(perc=perc+1),这不是执行。这意味着下面的代码部分不参与执行过程

perc=perc+1
    print "perc:",perc
    if(perc>100):break

    print "node in g1:", g1.nodes()
print "node in g2:", g2.nodes()
    N1=nx.number_of_nodes(g1)
    print N1
    r2=nx.degree_assortativity_coefficient(g1)
    print ("%f"%r2)        

    N2=nx.number_of_nodes(g2)
    print N2
    r3=nx.degree_assortativity_coefficient(g2)
    print ("%f"%r3)

有人能帮我解决这个代码中的错误吗


Tags: fromimportnetworkxnode节点randomnodesprint

热门问题