[pyar] Ayuda - Nuevo en python - como leer error?

Emiliano Cugno emi.cugno en gmail.com
Vie Sep 27 15:19:48 -03 2019


Hola! El problema creo que viene porque el código está escrito para python
2 y lo estás queriendo correr con python 3. Uno de los cambios
significativos fue en la función print.

Por lo que entiendo, podés hacer dos cosas:
1) instalar python 2 y correr el script con esa versión
2) migrar el código a la versión 3 de python para seguir corriendo el
script como lo hiciste.

Espero que te haya servido.
Saludos!

El vie., 27 sep. 2019 14:48, Edgardo <edgardolor en gmail.com> escribió:

> @Damian Castro
>
> Creo que me acabo de marear mas con tu explicación. Vamos por partes:
>
> 1) ¿Porque el error ocurre en *File "test.py", line 9, in imprimeDoble*
> si la llamada a la función se realiza en la ultima linea de código del
> archivo? ¿No debería ser esta el numero de linea mas alto?
>
> 2) No entiendo porque Python me muestra la funcion que llama a
> ImprimeDoble como parte del traceback si en este caso no se esta llamando a
> la función catDoble. Lo que yo entiendo es que en _main_ se hizo una
> llamada a ImprimeDoble y se le paso un argumento que quiere hacer
> referencia a una variable local definida en otra función, entonces ¿Porque
> no solo mostrar el error de que ImprimeDoble no puede llamar a una variable
> local de otra funciona?
> ¿Porque mostrar en el traceback catDoble cuando acá no tiene nada que ver
> a diferencia de main e ImprimeDoble?
>
> Se entiende mi duda?
>
> @Carlos Miguel Farias el código pegado esta sacado del libro, en mi Ubuntu
> uso python3 ;)
>
> Mil gracias, chicos.
>
> El vie., 27 sept. 2019 a las 3:04, Damián Castro (<ltdicai en gmail.com>)
> escribió:
>
>> Hola Edgardo, el traceback generalmente se lee de abajo hacia arriba,
>> siendo la última línea el error en sí, mientras que las anteriores indican
>> la ejecución del código que llevó a ese error. En ese ejemplo:
>>
>> File "test.py", line 9, in imprimeDoble
>>>         print cat
>>
>> NameError: cat
>>
>>
>> Indica que se produjo un error del tipo NameError en la línea 9 del
>> archivo test.py dentro de la función imprimeDoble. Ahora bien, si queremos
>> saber cuándo se llamó a esa función vemos las líneas encima:
>>
>> File "test.py", line 5, in catDoble
>>>         imprimeDoble(cat)
>>
>>
>> Ahí dice que se llamó a la función imprimeDoble en la línea 5 del mismo
>> archivo, dentro de la función catDoble. Siguiendo la misma idea, vemos
>> cuándo se llama a catDoble mirando las primeras líneas:
>>
>> File "test.py", line 13, in __main__
>>>         catDoble(cantus1, cantus2)
>>
>>
>> Efectivamente se llamó a catDoble en el mismo archivo pero en la línea 13
>> dentro de la función __main__, o sea la principal.
>>
>> Entonces, con todo esto podés armar el flujo de ejecución para poder
>> detectar el porqué del error: catDoble() -> imprimeDoble() -> print cat ->
>> NameError
>>
>> Espero que esto te ayude
>>
>> Saludos,
>> Damián
>>
>> El vie., 27 de sep. de 2019 a la(s) 02:41, Edgardo (edgardolor en gmail.com)
>> escribió:
>>
>>> Buenas noches,
>>>
>>> Les comento que hace algunos años intente aprender a programar y
>>> desistí por cuestiones laborales. Hoy por hoy ya con laburo estable estoy
>>> volviendo al ruedo. Para ponerlos en contexto, de forma rápida, mi hno de
>>> 29 esta casi por la mitad de Ing Industrial en la UTN y al no conseguir
>>> laburo se decidió por aprender a programar (después de ver la cant de gente
>>> que piden en los portales laborales) y yo de 31 me sume a la voleada ya que
>>> si conozco a alguien super capaz y que es inteligente es el.
>>>
>>> Estamos leyendo a la par "Aprenda a pensar como un programador con
>>> Python" y hasta casi el final del cap 3 veníamos bárbaro, pero es acá donde
>>> nos surge la siguiente duda:
>>>
>>> El cap define 2 funciones:
>>>
>>> 1)
>>> def imprimeDoble(paso):
>>>    print paso, paso
>>>
>>> 2)
>>> def catDoble(parte1, parte2):
>>>    cat = parte1 + parte2
>>>    imprimeDoble(cat)
>>>
>>> Luego hace la llamada a la función 1 y le pasa como argumento la
>>> variable local cat, creada solo dentro de catDoble().
>>>
>>> *Entiendo el PORQUE del error que devuelve python lo que no entiendo es
>>> como leerlo, seria el siguiente:*
>>>
>>> Traceback (innermost last):
>>>     File "test.py", line 13, in __main__
>>>         catDoble(cantus1, cantus2)
>>>     File "test.py", line 5, in catDoble
>>>         imprimeDoble(cat)
>>>     File "test.py", line 9, in imprimeDoble
>>>         print cat
>>> NameError: cat
>>>
>>> Y detalla "Esta lista de funciones de llama traceback (traza inversa).
>>> Le dice a usted en
>>> qué archivo de programa sucedió el error, y en qué lı́nea, y qué
>>> funciones se
>>> ejecutaban en ese momento. También muestra la lı́nea de código que causó
>>> el
>>> error."
>>>
>>> Si alguno fuera tan amable de explicarmelo se lo agradecería.
>>>
>>> Muchas gracias,
>>>
>>> Toty
>>> _______________________________________________
>>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>>> Sitio web: http://www.python.org.ar/
>>>
>>> Para administrar la lista (o desuscribirse) entrar a
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>
>> _______________________________________________
>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>> Sitio web: http://www.python.org.ar/
>>
>> Para administrar la lista (o desuscribirse) entrar a
>> http://listas.python.org.ar/listinfo/pyar
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20190927/5609a884/attachment-0001.html>


Más información sobre la lista de distribución pyar