Programa que cuelga Python

Mauricio Flores Olmos optimasc en yahoo.com.mx
Mie Sep 14 21:18:18 CEST 2005


Miguel escribió:
> Hola a todos.
> 
> Estoy haciendo un programa que cuelga el interprete de
> Python. Si ejecuto el programa desde la ventana del
> editor (idle), se cuelga (antes no lo hacia). Pero si
> copio el codigo y lopego en la ventana del
> interprete,funciona. No es un codigo complicado. Solo
> calcula el valor en binario de una serie de numeros.
> EL código que uso es:
> 
> 
> ////////////////////////////////////
> 
> # Funcion que manda los bits en cada llamada
> def extraeBit ():
> 
>     # Le decimos a Python que use la variable global
> (la definida fuera de la funcion)
>     global aux
>     global contador
>     global valor
> 
>     aux = valor & 0x01
>     valor = valor >> 1
>     contador = contador +1
>     
>     return aux
> 
> 
> # Inicializacion del programa
> MANDAR_TRAMA_DC = 1
> NUEVOVALOR = 1
> posicion = 0
> 
> tabla = [1,2,4,8,16,32,64,128,256,512,1024]
> a = ["","","","","","","","","",""]
> 
> NUEVOVALOR = 1
> 
> while (posicion < 10):
> 
>     # Cojo un valor del array
>     if (NUEVOVALOR == 1):
>         valor = tabla[posicion]
>         contador = 0
>         NUEVOVALOR = 0              # Flag para coger
> valor de la tabla
> 
> 
>     # Separo el numero entero en bits
>     # for i in range (0,len(a)):
>     #    a[i] = extraeBit ()
> 
>     #a.reverse()
>     #print a
> 
>     a[contador] = extraeBit ()
> 
> 
> En las siguientes lineas se cuelga el programa. Con
> los comentarios se ejecuta bien el programa, si los
> quito, se cuelga el interprete
> #   if (contador == 7):
> #       contador = 0
>        NUEVOVALOR = 1
> 
> 
> ¿Alguna sugerencia?

No le veo la necesidad para variables globales
ademas, creo que un curso de estructura de datos, ciclos y funciones 
recursivas te serviría mucho, porque la verdad esta innecesariamente 
complicado tu codigo.

En el caso del codigo con comentarios, estas cambiandole el valor del 
contador, por lo tanto verifica que no este dentro de un ciclo, porque 
entonces estas generando un ciclo infinito, lo que no significa que se 
cuelgue python, solo que al no haber condición de salida del ciclo se 
sigue ejecutando sin parar.

Quizas necesites diseñar primero el algoritmo antes de programar
Y me parece que no pusiste completo el código, porque algunas variables 
las usas, pero no se ve donde las modifiques


Mauricio Flores Olmos

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis! 
Regístrate ya - http://correo.yahoo.com.mx/ 




Más información sobre la lista de distribución Python-es