Prb: Lista se me cambia de valor dentro de una fun
Publicado por martin_artaza (2 intervenciones) el 14/08/2007 21:35:14
Hola que tal, tengo un problema con una funcion que necesita una lista, la copio a esta lista (la llamo A), en otra la llamemos A, y cuando hago de todo con B, salgo y anda de 10 pero le pasa lo mismo a A. este es codigo:
desde ya muchas gracias, si copian y pegan el codigo se daran cuenta que ejecuta pero no lo que quiero.
Pd: Cualquier critica del codigo es bienvenida, recien empiezo con oo, eh leido pero nunca la implemente en un lenguaje como este, soy novato en python
pd2: muchas gracias por su tiempo.
pd3: está siendo ejecutado en windows, que guid me recomiendan para windows?
chauuuuu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
## --------------- Comienzo del codigo -----------------
##nodo es el conjunto de cables, un punto en el circuito
##nombre, sera el nombre del nodo
##cantidad, es el ancho de bus del nodo, en espanol cuantos cables hay
##valores son los cables y su valor de voltaje
##o sea cuando se lee (0,0),(1.0),(2,1),(3,0) significa que los
##cables 0,1,3 estan en voltaje 0 o valor logico cero y el
##cable numero 2 esta en voltaje alto
class nodo:
def __init__(self, nombre, cantidad, valores = None):
self.nombre = nombre
self.cantidad = cantidad
if valores:
self.valores = valores
else:
self.valores = []
for i in range(self.cantidad):
self.valores.append((i,0))
def anadir(self, elemento):
self.valores.append(elemento)
def __str__(self):
return str(self.valores[:])
##signoextend es un componente electronico que agarra una cantidad de cables
##y completas hasta (cuanto valga hasta) con cables que tiene mismo voltaje que
##el primero, necesita un nodo de entrada (nodo) y (salida) es el nodo de salida
class signoextend:
def __init__(self, nodoentrada, nombre, hasta):
self.nombre = nombre
self.hasta = hasta or 32
self.nodoin = nodoentrada
self.nodosalida = self.nodoin
primero = self.nodosalida.valores[0][1]
j = self.nodosalida.cantidad
while j < self.hasta:
self.nodosalida.anadir((j,primero))
j = j+1
def salida(self):
return self.nodosalida
def __str__(self):
return str(self.nodosalida.valores[:])
b = nodo("pc",5)
print "imprimo el nodo b ", b
d = signoextend(b,"se",32)
print "imprimo de vuelta b ", b #aparece igual que d, se cambio y no quiero eso, quiero que
# se mantenga igual como estaba antes de entrar a signoextend
print "imprimo d", d # este anda bien, el que anda mal es b, se cambio de valor
## --------------- fin del codigo -----------------
desde ya muchas gracias, si copian y pegan el codigo se daran cuenta que ejecuta pero no lo que quiero.
Pd: Cualquier critica del codigo es bienvenida, recien empiezo con oo, eh leido pero nunca la implemente en un lenguaje como este, soy novato en python
pd2: muchas gracias por su tiempo.
pd3: está siendo ejecutado en windows, que guid me recomiendan para windows?
chauuuuu
Valora esta pregunta


0