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