Форум сайта python.su
Добрый день.
Недавно нашла готовый код для нахождения центра графа на языке питон. К сожалению сама в этом языке плохо разбираюсь. При компиляции программа выдает ошибку
“Traceback (most recent call last):
File ”C:\Documents and Settings\admin\Мои документы\11“, line 9, in <module>
class Node:
File ”C:\Documents and Settings\admin\Мои документы\11", line 75, in Node
n0=Node(,4)
NameError: name ‘Node’ is not defined"
Помогите, в чем проблема? Буду очень благодарна!!!
from threading import *
from time import sleep
from sys import stdin,stderr,exit
from copy import copy
from math import log, floor
from random import randrange, choice
from time import time
class Node:
def __init__(s,neigh,d,initiator=True):
s.caw=None
s.rec=0
s.father=None
s.lrec=0
s.win=None
s.d=d
s.initiator=initiator
s.state=['state','sleep']
s.neigh=neigh
s.th=Thread(target=s.extinct_echo_center)
s.id=int(s.th.getName()[7:])-1
s.num=0
s.rmsg=None
s.buffer=[ ]
def send(s,d,msg):
d.buffer.append(msg)
def check(s):
s.rmsg=s.buffer.pop(0)
return s.rmsg
def start(s):
s.th.start()
def getName(s):
return s.id
def repr (s):
return str(s.id)
def add_link(s,z):
s.neigh.append(z)
def extinct_echo_center(s):
addr=dict([(node.id,node) for node in nodes])
s.num=len(s.neigh)
if s.initiator:
s.caw=s.d
for q in s.neigh:
s.send(q,('tok', s.d, s.id))
while s.lrec<s.num:
sleep(0.01+choice((0.001, 0.002, 0.003)))
if s.buffer:
name,r,qid=s.check()
if name=='ldr':
if s.lrec==0:
for q in s.neigh:
s.send(q,('ldr', r, s.id))
s.lrec+=1
s.win=r
else:
if r<s.caw:
s.caw=r
s.rec=0
s.father=qid
for p in s.neigh:
if not p.id==qid:
s.send(p,('tok', r, s.id))
if r==s.caw:
s.rec+=1
if s.rec==s.num:
if s.caw==s.id:
for p in s.neigh:
s.send(p,('ldr',s.d,s.id))
else: s.send(addr[s.father],('tok',s.caw,s.id))
if s.win==s.d:
s.state='Centre'
else: s.state='remote'
n0=Node([ ],4)
n1=Node([n0],3)
n2=Node([n1],4)
n3=Node([n1],3)
n4=Node([n1,n3],3)
n5=Node([n4],4)
n6=Node([n5],5)
n7=Node([n2],5)
n0.add_link(n1)
n1.add_link(n2)
n1.add_link(n3)
n1.add_link(n4)
n2.add_link(n7)
n3.add_link(n4)
n4.add_link(n5)
n5.add_link(n6)
nodes=[n0,n1,n2,n3,n4,n5,n6,n7]
for node in nodes: node.start()
t0=time()
while 1:
alive=0
for node in nodes: alive+=node.th.isAlive()
print >>stderr,'%d threads alive'%alive
if alive==0: break
sleep(1)
for node in nodes:print node.id,'is',str(node.state)
Офлайн
Уже сама разобралась! Всем спасибо! :)
Офлайн
описывай что было …. не указала r“” ?
Офлайн
Надо писать class Node():
Офлайн
Не надо, вас обманули
Офлайн
В отступах же проблема…
Офлайн
Конечно, в отступах.
Игорь, девушка сама всё починила. Полтора года назад.
А какое-то чудо начало давать советы. И все бы ничего - но совет неправильный :)
Офлайн
Андрей Светловопс, не посмотрел на дату… надо было еще умудриться эту тему откопать и оставить в ней свое первое сообщение :)
А какое-то чудо начало давать советы. И все бы ничего - но совет неправильный :)
Офлайн