<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:arial,helvetica,sans-serif;font-size:10pt"><div style="font-family:arial, helvetica, sans-serif;font-size:10pt"><br><div style="font-family:arial, helvetica, sans-serif;font-size:10pt"><font size="2" face="Tahoma"><b><span style="font-weight: bold;">>De:</span></b> Francesc Gispert Sanchez <francesc_gispert_11.12@hotmail.com><br><b><span style="font-weight: bold;">>Para:</span></b> python-es@python.org<br><b><span style="font-weight: bold;">>Enviado:</span></b> jue,4 agosto, 2011 19:15<br><b><span style="font-weight: bold;">>Asunto:</span></b> [Python-es] Problema con listas duplicadas<br></font>><br>>Hola, estoy aprendiendo a programar en Python y he intentado hacer una<br>>versión del juego de mesa 'Othello' sólo con texto. Pero mi problema<br>>esque la función que cambia las piezas blancas por negras y viceversa
no<br>>funciona, y tras muchas horas probando cosas, me parece que el problema<br>>viene de la función que duplica la matriz (una lista de listas) que<br>>representa el tablero.<br>><br>>Esto se puede observar gracias a lo que imprimen las líneas 164 y 165<br>>del archivo .py; concretamente la 165. Esta línea debería mostrar todo<br>>el rato el mismo tablero (lista) exacto, puesto que no hay nada dentro<br>>de la función 'giraFitxes' (giraFichas) que lo modifique. Pero éste va<br>>adoptando los mismos valores que el tablero provisional que utilizo para<br>>girar las fichas (el que imprime la línea 164). Por eso, deduzco que<br>>cuando creo un tablero provisional con la función<br>>'duplicaTauler' (duplicaTablero) no se crea una lista nueva, sino que la<br>>nueva variable es sólo otra referencia al tablero principal.<br>><br>>Además de ésta forma de duplicar el tablero, lo he probado con
la<br>>función descrita en '<a href="http://challenges.qumax.org/?p=351%27" target="_blank">http://challenges.qumax.org/?p=351'</a>, pero tampoco<br>>ha funcionado. También lo he intentado con un bucle que recorriera las<br>>filas y, dentro de éste, 'duplicado = tablero[fila][:]', pero no hay<br>>forma. Es muy probable que, además de esto, haya algún otro fallo en el<br>>código, pero si es así no me he percatado por culpa de éste que comento.<br>><br>>Entonces, ¿cómo debería hacerlo para crear un tablero provisional con<br>>los mismos valores que el tablero original sin que, al modificarlo, se<br>>modifique también el original?<br>><br>><br>>El programa (las variables, los comentarios, etc.) está en catalán,<br>>espero que no sea una molestia; si lo es, os lo puedo traducir. No sé si<br>>es relevante, pero utilizo Python 2.6.7 en Debian Wheezy (testing).<br>><br>>Muchas gracias por
adelantado.<br>><br>><br>>Francesc Gispert<br><br><br>Buenos días,<br>para duplicar el tablero original puedes utilizar deepcopy del módulo copy:<br><br><span><a target="_blank" href="http://www.python.org/doc//current/library/copy.html">http://www.python.org/doc//current/library/copy.html</a></span><br><br>Un saludo,<br><br> Luis<br></div></div>
</div></body></html>