Re: [Python-es] [Consulta] csv y diccionario

2020-07-24 Por tema Sebastián Arancibia
Entiendo, la verdad no sabía que no programabas, pensé que venías de otro
lenguaje. Que bien que te animes en aprender, además Python es muy versátil
así que lo puedes aplicar en muchas cosas.

Claro, la versatilidad es una de las grandes ventajas del diccionario, y la
verdad es que te había preguntado lo de los lenguajes porque los
diccionarios tienen un simil en otros lenguajes (como por ejemplo en Java
está el Map, no es lo mismo -en lo personal prefiero el diccionario de
Python que el Map de Java- pero es algo similar en cuanto a uso).
Pero ahí la gracia de usar diccionarios es, si tengo varios csv por
ejemplo, cada registro lo podría asociar a un diccionario, y si son varios
csv tener tal vez una lista de varios diccionarios (donde cada diccionario
puede ser una fila con todas las columnas, donde la clave es el nombre de
la columna). Tampoco es la idea ir moviendo el archivo dentro de
estructuras de datos, siempre lo ideal es leer el archivo, cerrarlo, y
trabajar con la información del archivo.

Saludos!

On Fri, Jul 24, 2020 at 5:53 PM Lemarchand Barker 
wrote:

> Hola Sebastián, como es obvio no soy programadora innata pero python
> siempre me atrajo. En mi juventud programé con php y html+css, pero
> nunca me llevé bien con ese lenguaje, me resulta incómodo, no digo que
> sea malo ni nada, yo no me sentía cómoda usándolo. Fue ahí cuando me
> pasé a python 2.7, cuando el 3 estaba empezando. Después por
> cuestiones personales tuve que dejar la programación y siempre lo vi
> como un pendiente, me gusta, claramente me lleva más tiempo aprenderlo
> pero no me doy por vencido aunque solo tenga conocimientos más que
> básicos.
> Preguntaba lo del diccionario porque acá en la lista ya me lo habían
> sugerido y porque en muchos ejemplos que veo y leo también lo usan y
> quería saber si había algún motivo en especial por el cual se lo
> usaba. Y creo que más allá de lo que me dijiste, que todo depende la
> tarea que quiera realizar y la cantidad de datos a analizar pero creo
> que la ventaja principal es la que me dijiste, la versatilidad del
> diccionario. Vi por ejemplo que un diccionario puede almacenar varios
> csv a la vez.
> Muchas gracias, saludos
>
> El vie., 24 jul. 2020 a las 18:28, Sebastián Arancibia
> () escribió:
> >
> > Primero, creo pertinente aclarar conceptos. Sería bueno que nos dijeras
> en que otros lenguajes te manejas o tienes experiencia para hacer un símil.
> >
> > Python tiene 4 tipos de estructuras de datos. Listas, conjuntos (sets),
> tuplas y diccionarios. Las listas son, como dice su nombre, un listado de
> objetos (que pueden ser enteros, strings, otras listas, etc) y que permiten
> operaciones entre si. Los conjuntos son similar con la diferencia que el
> conjunto no acepta elementos repetidos, y de que aceptan operaciones
> típicas de conjuntos como unión, intercepción o diferencia. Las tuplas son
> similares a las listas, con la diferencia de que son inmutables (o sea, no
> puedes cambiarlas una vez creadas). Y, finalmente, tenemos los
> diccionarios, que son una estructura que guarda pares de clave-valor, y que
> también pueden almacenar como valor cualquier tipo de dato (otros
> diccionarios, listas, etc).
> >
> > Hice la salvedad de diferenciar las estructuras de dato, porque, como
> siempre, esto incide en la decisión de qué usar, y eso simplemente lo ves
> dependiendo de lo que necesites. Para algunos casos conviene listados, para
> otros conjuntos, para otros tuplas y para otros diccionarios. Es cierto que
> tal vez un cierto problema lo puedes enfocar de varias formas pero ahí el
> rendimiento entra en juego. No es lo mismo procesar unos cientos datos que
> millones de datos... y un desarrollo bien optimizado en Python hace
> muchísimo la diferencia en rendimiento. Esto se nota sobre todo si después
> despliegas tus desarrollos (ya sea en la nube, en un servidor, etc).
> >
> > Ahora, ¿por qué los diccionarios son muy buenos? Pues porque es una
> estructura de dato muy versátil, te permite buscar por keys, anidar
> objetos, filtrar, etc. Además es muy similar a operar un JSON (sin serlo),
> entonces es mucho más natural a la hora de trabajar datos versus una
> lista/tupla. Esto es muy útil si trabajas haciendo microservicios en Python
> por ejemplo, ya que te hace sencillísimo mapear inputs/outputs y
> trabajarlos. Es importante si la aclaración de que no es lo mismo que JSON,
> hay muchas personas que he conocido que piensan erróneamente esto último
> cuando recién se están introduciendo en Python y después se frustran cuando
> notan que sus desarrollos no devuelven respuestas esperadas (o en el
> formato esperado).
> >
> > Ahora, si quieres ver rendimiento o complejidad algorítmica, este link (
> https://www.pythonlikeyoumeanit.com/Module2_EssentialsOfPyt

Re: [Python-es] [Consulta] csv y diccionario

2020-07-24 Por tema Sebastián Arancibia
Primero, creo pertinente aclarar conceptos. Sería bueno que nos dijeras en
que otros lenguajes te manejas o tienes experiencia para hacer un símil.

Python tiene 4 tipos de estructuras de datos. Listas, conjuntos (sets),
tuplas y diccionarios. Las listas son, como dice su nombre, un listado de
objetos (que pueden ser enteros, strings, otras listas, etc) y que permiten
operaciones entre si. Los conjuntos son similar con la diferencia que el
conjunto no acepta elementos repetidos, y de que aceptan operaciones
típicas de conjuntos como unión, intercepción o diferencia. Las tuplas son
similares a las listas, con la diferencia de que son *inmutables* (o sea,
no puedes cambiarlas una vez creadas). Y, finalmente, tenemos los
diccionarios, que son una estructura que guarda pares de clave-valor, y que
también pueden almacenar como valor cualquier tipo de dato (otros
diccionarios, listas, etc).

Hice la salvedad de diferenciar las estructuras de dato, porque, como
siempre, esto incide en la decisión de qué usar, y eso simplemente lo ves
dependiendo de lo que necesites. Para algunos casos conviene listados, para
otros conjuntos, para otros tuplas y para otros diccionarios. Es cierto que
tal vez un cierto problema lo puedes enfocar de varias formas pero ahí el
rendimiento entra en juego. No es lo mismo procesar unos cientos datos que
millones de datos... y un desarrollo bien optimizado en Python hace
muchísimo la diferencia en rendimiento. Esto se nota sobre todo si después
despliegas tus desarrollos (ya sea en la nube, en un servidor, etc).

Ahora, ¿por qué los diccionarios son muy buenos? Pues porque es una
estructura de dato muy versátil, te permite buscar por keys, anidar
objetos, filtrar, etc. Además es muy similar a operar un JSON (sin serlo),
entonces es mucho más natural a la hora de trabajar datos versus una
lista/tupla. Esto es muy útil si trabajas haciendo microservicios en Python
por ejemplo, ya que te hace sencillísimo mapear inputs/outputs y
trabajarlos. Es importante si la aclaración de que *no es lo mismo que JSON*,
hay muchas personas que he conocido que piensan erróneamente esto último
cuando recién se están introduciendo en Python y después se frustran cuando
notan que sus desarrollos no devuelven respuestas esperadas (o en el
formato esperado).

Ahora, si quieres ver rendimiento o complejidad algorítmica, este link (
https://www.pythonlikeyoumeanit.com/Module2_EssentialsOfPython/DataStructures.html)
puede darte más luces. Ojo, repito que no es que una estructura de datos
sea mejor que otra, depende mucho de la necesidad, caso de uso o
requerimiento en específico.

Saludos.

On Fri, Jul 24, 2020 at 2:46 PM Lemarchand Barker 
wrote:

> Hola, esta vez les pregunto como bien me habían comentado antes, a la
> hora de trabajar con un archivo csv que use diccionario. Pero hay
> algún motivo en particular o en especial por el cuál se hace esto? Es
> por cuestión de rendimiento a nivel sistema o porque ofrece una forma
> más fácil de trabajar y manipular la información?
> Por lo que leí es mejor usar el diccionario en vez de manejar la una
> lista individual de cadenas. Lo entiendo pero hay algún plus o algo
> que favorezca el uso del diccionario?
> Gracias, saludos
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] [Consulta] Leer csv

2020-07-19 Por tema Sebastián Arancibia
Y pandas te abre un mundo de cosas... el inicio para ir aprendiendo data
science.

Saludos.

On Sun, Jul 19, 2020 at 4:23 PM Darío vía Python-es 
wrote:

>
> Ahora me quedó más claro, que tengo que usar pandas, en el mail anterior
> no lo había entendido. Gracias
>
>
> Sí perdón la desprolijidad! mejor aún es la documentación del paquete, la
> oficial está en inglés y son miles de páginas, esta página me ayudó mucho
> con pandas y otras librerías y python per sé:
> https://riptutorial.com/es/topic?q=pandas=Search
>
>
>
>
> Enviado desde mi smartphone Samsung Galaxy.
>
>
>  Mensaje original 
> De: Darío vía Python-es 
> Fecha: 19/7/20 17:10 (GMT-03:00)
> A: La lista de python en castellano 
> CC: Darío 
> Asunto: Re: [Python-es] [Consulta] Leer csv
>
> Usando el archivo original éstas son las salidas:
> >>> import pandas as pd
>
> >>> leer = pd.read_csv('/home/darioslc/Descargas/demo.csv')
>
> >>> leer
>T02 Region/Contry/Area...  Value
> 0   1...  6541.9070
> 1   1...  3296.4853
> 2   1...  3245.4217
> 3   1...   101.5734
> 4   1...28.1425
> 5   1...10.2516
>
> [6 rows x 5 columns]
>
> >>> leer.columns # muestra todas las columnas
> Index(['T02 Region/Contry/Area', ' Population density and surface area',
>' Year', ' Series', ' Value'],
>   dtype='object')
>
> >>> leer.columns[0]
> 'T02 Region/Contry/Area'
>
> >>> leer[leer.columns[2]]
> 02005
> 12005
> 22005
> 32005
> 42005
> 52005
> Name:  Year, dtype: int64
>
> >>> leer[:] # muestra todo
>T02 Region/Contry/Area...  Value
> 0   1...  6541.9070
> 1   1...  3296.4853
> 2   1...  3245.4217
> 3   1...   101.5734
> 4   1...28.1425
> 5   1...10.2516
>
> [6 rows x 5 columns]
>
> >>> leer[0:3] # muestra de la columna 0 a la 3
>T02 Region/Contry/Area...  Value
> 0   1...  6541.9070
> 1   1...  3296.4853
> 2   1...  3245.4217
>
> [3 rows x 5 columns]
>
> >>> # renombro la primer columna
>
> >>> leer2 = leer.rename(columns = {leer.columns[0]:'regione'})
>
> >>> leer2
>regione...  Value
> 01...  6541.9070
> 11...  3296.4853
> 21...  3245.4217
> 31...   101.5734
> 41...28.1425
> 51...10.2516
>
> [6 rows x 5 columns]
>
> No muestra todos los datos porque los nombres de columna son excesivamente
> largos, se puede renombrar con el comando anterior separando por comas lo
> renombrado (primero va el nombre viejo y después de los : el nuevo)
>
> Luego de abierto lo que podés hacer con pandas es realmente todo!!! desde
> calcular valores medios, máximos, mínimos, interpolar, graficar, etc
>
> -
>
> Sent with ProtonMail Secure Email.
>
> ‐‐‐ Original Message ‐‐‐
> On Sunday, 19 de July de 2020 16:49, Lemarchand Barker <
> lemarchand8...@gmail.com> wrote:
>
> > Estoy probando copiar un poco de la data del csv, lo pasé a un editor
> > y el código funcionó perfecto. No se si el archivo original tendrá
> > algún inconveniente, mi código o funciona porque copié una parte de la
> > info y no todo el resto.
> > Adjunto el archivito que hice, el código no lo toqué, lo único que
> > hice fue comentar la línea del with para colocar el nombre nuevo, y
> > quedó así:
> >
> > with open('demo.csv', 'rt') as File:
> >
> > Y la salida es la siguiente:
> > ['T02 Region/Contry/Area', ' Population density and surface area', '
> > Year', ' Series', ' Value']
> > ['1', ' Total all countries or areas', ' 2005', ' Population mid-year
> > estimates (millions)', ' 6541.9070']
> > ['1', ' Total all countries or areas', ' 2005', ' Population mid-year
> > estimates for males (millions)', ' 3296.4853']
> > ['1', ' Total all countries or areas', ' 2005', ' Population mid-year
> > estimates for females (millions)', ' 3245.4217']
> > ['1', ' Total all countries or areas', ' 2005', ' Sex ratio (males per
> > 100 females)', ' 101.5734']
> > ['1', ' Total all countries or areas', ' 2005', ' Population aged 0 to
> > 14 years old (porcentage)', ' 28.1425']
> > ['1', ' Total all countries or areas', ' 2005', ' Population aged 60+
> > years old (porcentage)', ' 10.2516']
> > []
> > Justo mando esto cuando Darío me respondió. Saludos
> >
> > El dom., 19 jul. 2020 a las 16:22, Lemarchand Barker
> > (lemarchand8...@gmail.com) escribió:
> >
> > > Buenas, estoy leyendo un csv, al principio no me leía, hasta que logré
> que lo haga, pero el problema viene cuando lee. Me muestra el resultado y
> al final me da un mensaje de error.
> > > El código es el 

Re: [Python-es] [Consulta] max() y min()

2020-07-16 Por tema Sebastián Arancibia
El ejemplo de Juan José usa un método de la clase string (
https://www.w3schools.com/python/python_ref_string.asp  ) mientras que el
de Ricardo importa la clase Counter del módulo collections. Si no me
equivoco, la clase Counter te permite contar cualquier tipo de objeto, a
diferencia del count() de la clase string que solo te cuenta un determinado
caracter o string dentro de una cadena. Esa es la diferencia.

On Thu, Jul 16, 2020 at 10:53 AM Lemarchand Barker 
wrote:

> Buenas, estoy viendo las opciones que me dieron con count().
> Ahora viene mi pregunta, cuál sería la diferencia entre lo que me
> recomendó:
> Juan José:
> va = cadena.count('a')
>
> Y lo que dijo:
> Ricardo:
>
> >>> from collections import Counter
> >>> cuentas = Counter(cadena.lower())
> >>> va = cuentas.get('a', 0)
> >>> ve = cuentas.get('e', 0)
> >>> va
> 10
> >>> ve
> 7
>
> Gracias, saludos
>
> El mié., 15 jul. 2020 a las 21:49, lemarchand8679
> () escribió:
> >
> > Mañana lo reviso también, muchas gracias
> >
> >
> >
> > Enviado desde mi smartphone Samsung Galaxy.
> >
> >
> >  Mensaje original 
> > De: Ricardo Cárdenes 
> > Fecha: 15/7/20 21:10 (GMT-03:00)
> > A: La lista de python en castellano 
> > Asunto: Re: [Python-es] [Consulta] max() y min()
> >
> > Te voy a dar una mejor:
> >
> > >>> from collections import Counter
> > >>> cuentas = Counter(cadena.lower())
> > >>> va = cuentas.get('a', 0)
> > >>> ve = cuentas.get('e', 0)
> > >>> va
> > 10
> > >>> ve
> > 7
> >
> >
> > Tras ejecutar la segunda línea, cuentas es un objeto con la misma
> interfaz que un diccionario.
> >
> > Observa que pasé cadena.lower() a Counter, pensando que quieres todas
> las vocales, no sólo las minúsculas. Adáptalo según necesites.
> >
> > On Wed, Jul 15, 2020 at 11:08 AM Lemarchand Barker <
> lemarchand8...@gmail.com> wrote:
> >>
> >> Lo voy a buscar y voy a ver.
> >> Muchas gracias
> >>
> >> El mié., 15 jul. 2020 a las 18:03, Juan José Gómez Romera
> >> () escribió:
> >> >
> >> > Hola, como uso te hace la función q necesitas, yo sin embargo
> recortaria código usando count:
> >> >
> >> > va = cadena.count('a')
> >> > ...
> >> >
> >> > Perdón por ser tan parco con el código, estoy desde móvil.
> >> >
> >> >
> >> >
> >> >
> >> > El mié., 15 jul. 2020 22:28, Lemarchand Barker <
> lemarchand8...@gmail.com> escribió:
> >> >>
> >> >> Hola, vengo con otra pregunta tonta.
> >> >> Estaba jugando con for, la típica de buscar máximos y mínimos, les
> >> >> dejo el código:
> >> >>
> >> >> lista = []
> >> >>
> >> >> cadena = "Esto es una cadena que contiene varias letras y muchas
> palabras"
> >> >>
> >> >> vocales = ['a', 'e', 'i', 'o', 'u']
> >> >>
> >> >> for x in cadena:
> >> >> if x == 'a':
> >> >> va = va + 1
> >> >> elif x == 'e':
> >> >> ve = ve + 1
> >> >> elif x == 'i':
> >> >> vi = vi + 1
> >> >> elif x == 'o':
> >> >> vo = vo + 1
> >> >> elif x == 'u':
> >> >> vu = vu + 1
> >> >>
> >> >> lista.append(va)
> >> >> lista.append(ve)
> >> >> lista.append(vi)
> >> >> lista.append(vo)
> >> >> lista.append(vu)
> >> >>
> >> >> total = va + ve + vi + vo + vu
> >> >>
> >> >> max_item = max(lista, key=int)
> >> >> min_item = min(lista, key=int)
> >> >> print(f"Mayor: {max_item}")
> >> >> print(f"Menor: {min_item}")
> >> >>
> >> >> Bueno mi consulta es la siguiente, está bien que haya utilizado max y
> >> >> min para tratar de buscar cuál es la vocal que más se repite y menos
> >> >> se repite? Pero el tema es el siguiente hay 2 vocales que se repiten
> >> >> solamente 2 veces, que son: i y o. Asumo que por el orden de los
> >> >> elementos en la lista el 2 que muestra se corresponde a la i.
> >> >> Bueno eso es todo, consultar si está bien utilizado el max y el min,
> >> >> saludos y gracias.
> >> >> ___
> >> >> Python-es mailing list
> >> >> Python-es@python.org
> >> >> https://mail.python.org/mailman/listinfo/python-es
> >> >
> >> > ___
> >> > Python-es mailing list
> >> > Python-es@python.org
> >> > https://mail.python.org/mailman/listinfo/python-es
> >> ___
> >> Python-es mailing list
> >> Python-es@python.org
> >> https://mail.python.org/mailman/listinfo/python-es
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] [Consulta] pass y none

2020-07-14 Por tema Sebastián Arancibia
Hola,

En términos prácticos, ambas son lo mismo.
En términos más puristas, el pass es una declaración y el None es una
expresión. ¿Qué quiere decir esto? El pass es una declaración vacía
(similar a poner una función o método vacío en otros lenguajes, solo que en
Python al ser indentado, si o si debes poner algo. El pass cumple la
función equivalente). El None es una expresión que es evaluada, vale decir,
toma un valor (en este caso None), solo que no lo estás asignando. Es
equivalente a poner cualquier entero, string, etc, solo que el None
equivale a un valor nulo.

Saludos.

On Tue, Jul 14, 2020 at 9:40 AM Lemarchand Barker 
wrote:

> Hola, perdón la pregunta tonta pero quiero saber cuál es la diferencia
> entre poner por ejemplo:
> class name():
> none
> Y:
> class name():
> pass
> Hay alguna diferencia realmente sustancial que me diga: en este caso usás
> pass y en otro caso none?
> Gracias, saludos
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] [Consulta] Sobre keyerror

2020-07-02 Por tema Sebastián Arancibia
Aportando a lo que dices, y considerando que Verónica (ese era tu nombre,
verdad?) usa PyCharm, el debugger que viene con el IDE es prácticamente lo
mejor del IDE. Puedes configurar tu código para que se ejecute desde un
main y ahí es simplemente darle "play" a la flecha que aparece al costado
de la línea donde declaras el main (justo no estoy en el compu del trabajo
donde uso PyCharm para desarrollar, pero mañana podría subir una captura).
El debugging te permite, aparte de poner los puntos de quiebre, ver los
valores de las variables en todo momento así como usar watchers para ser
aún más específico, así que si, muy buen consejo y es recomendable
familiarizarse a debuggear así ya que con print logging pierdes mucho
tiempo en escribir y luego remover logs que no se usarán en la app.

Saludos.

On Thu, Jul 2, 2020 at 9:30 PM lasizoillo  wrote:

> Buenas, perdonad el Off Topic, pero creo que es interesante comentar esto.
>
> El jue., 2 jul. 2020 a las 23:19, Gerardo Diez (<
> gerardo.diez.gar...@gmail.com>) escribió:
>
>> Hola,
>>
>> No soy precisamente un experto, pero yo normalmente voy poniendo prints
>> /liga por todos lados para que me vaya mostrando el contenido de las
>> cadenas.
>>
>>
>>
> No te voy a dármelas de listo y voy a confesar que de vez en cuando
> también hago "print debugging", pero cuando cuando lo hago es por pura
> vagancia y cosas muy rapiditas aun sabiendo que no es lo mejor para el día
> a día o para proyectos que van cogiendo cierto tamaño.
>
> Un avance sobre sobre el "print debugging" es usar el módulo logging.
> Basicamente la idea es que los prints que usas de debug los tienes que
> quitar para no tener "morralla" en producción. Si los imprimes con nivel de
> log debug, modificando en un único sitio puedes hacer que aparezcan o
> desaparezcan con la configuración del logger y no se escapa ninguno a
> producción ensuciándose los logs. Y puedes incluso configurar para que
> determinado módulo (o el namespace que utilices) tenga un cierto nivel de
> log (por ejemplo DEBUG) mientras que otros módulos tengan otro nivel de log
> (por ejemplo WARNING).
>
> Pero lo mejor del mundo mundial es usar un debugger. Pdb viene con python
> pero es muy espartano, seguramente estés más cómodo con ipdb. Y si usas un
> IDE seguro que se integra con uno, que es incluso más cómodo. Puedes poner
> puntos de ruptura (el código se ejecuta hasta llegar a uno de ellos),
> ejecutar a partir de ahí paso a paso, analizar cualquier variable que
> tengas en el scope, volver a hacer que el programa se ejecute hasta el
> final o el siguiente punto de ruptura, usar el repl de python para probar
> que el código que te va a solucionar el problema realmente funciona,... Al
> principio puede que cueste un poquito, pero la inversión de tiempo se
> amortiza rápido.
>
> Resumen: a nada que estés haciendo algo que no sea un script de usar y
> tirar configura el logger y deja de usar print debugging. Aun así no hagas
> "print debugging" con el logger a no ser que esté justificado, mejor usa un
> debugger.
>
> Un saludo,
>
> Javi
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] [Consulta] Sobre keyerror

2020-07-02 Por tema Sebastián Arancibia
Hola,

En efecto el error es porque no encuentra la key en el diccionario. De
hecho hice un print de la variable que obtienes tras llamar a la API, y al
no tener un API KEY válido no viene el elemento "main" dentro del
diccionario.

Este es el json de respuesta convertido a diccionario: {'cod': 401,
'message': 'Invalid API key. Please see
http://openweathermap.org/faq#error401 for more info.'}
Fíjate que si viene el cod (y por eso no se cae en esa línea), pero no
viene nada mas, lo que haría yo en ese if es validar respuestas distintas a
200.

Raro si, que me creé una cuenta para usar la API, y no me funciona la API
KEY. Debe estar desactualizado el tutorial.

Saludos.

On Thu, Jul 2, 2020 at 6:30 PM Lemarchand Barker 
wrote:

> Hola, este es mi código:
>
> import requests
> import json
>
> api_key = "API_KEY"
>
> url = "http://api.openweathermap.org/data/2.5/weather?q=sp;
>
> nombre_ciudad = input("Ingrese nombre de la ciudad: ")
>
> complete_url = url + "appid=" + api_key + "=sp" + nombre_ciudad
>
> response = requests.get(complete_url)
>
> x = response.json()
>
> if x["cod"] != "404":
>
> y = x["main"]
>
> temperatura_actual = y["temp"]
>
> celsius = temperatura_actual - 273.15
>
> presion_actual = y["pressure"]
>
> humedad_actual = y["humidity"]
>
> z = x["clima"]
>
> descripcion = z[0]["descripcion"]
>
> print(f"Temperatura: {celsius}°")
> print(f"Presión atmosférica: {presion_actual} hPa")
> print(f"Humedad: {humedad_actual} %")
> print(f"Descripción: {descripcion}")
>
> else:
> print("Ciudad no encontrada")
>
> La salida es la siguiente:
>
> /usr/bin/python3.8 /home/raiden/Programacion/weather/weather.py
> Ingrese nombre de la ciudad: Rosario
> Traceback (most recent call last):
>   File "/home/raiden/Programacion/weather/weather.py", line 18, in 
> y = x["main"]
> KeyError: 'main'
>
> El código original es este:
> Python-find-current-weather-of-any-city-using-openweathermap-api/
> 
>
> Saludos y gracias
>
>
> El jue., 2 jul. 2020 a las 18:20, Gerardo Diez (<
> gerardo.diez.gar...@gmail.com>) escribió:
> >
> > Hola,
> >
> > No soy precisamente un experto, pero yo normalmente voy poniendo prints
> /liga por todos lados para que me vaya mostrando el contenido de las
> cadenas.
> >
> > No recuerdo muy bien el funcionamiento de input pero puede ser que el
> string que se esté incorporando lleve un salto de línea final ( \n)?
> >
> > Si es así mira la función strip
> >
> > Un saludo
> >
> > El jue., 2 jul. 2020 22:01, lemarchand8679 
> escribió:
> >>
> >> Hola, había escrito para comentar que había solucionado el
> inconveniente de KeyError, y es cierto en parte. Digo en parte porque si
> escribo desde 0 para hacer algunas modificaciones, me tira ese error al
> introducir una ciudad, y si hago un copy-paste del código funciona y la
> verdad no se por qué, alguna idea? Gracias
> >>
> >>
> >>
> >> Enviado desde mi smartphone Samsung Galaxy.
> >>
> >> ___
> >> Python-es mailing list
> >> Python-es@python.org
> >> https://mail.python.org/mailman/listinfo/python-es
> >
> > ___
> > Python-es mailing list
> > Python-es@python.org
> > https://mail.python.org/mailman/listinfo/python-es
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Conocimientos

2017-03-27 Por tema Sebastián Arancibia
Mario,

Esta lista no es una competencia por ver quien sabe más, o quien trata de
"bajarte". Creo que ese enfoque es errado. Al final noto en tus palabras un
afán por resaltar lo que sabes.

Como dice Sherab más arriba, si todo se resolviera con una búsqueda en
Google o Wikipedia, probablemente esta lista no tenga razón de ser, ¿para
qué vendríamos acá si todo se puede obtener por otros lados?

La riqueza de las discusiones es aportar con nuestro conocimiento, para
contribuir al conocimiento de los demás. El mejor respeto no se gana
demostrando lo que sabes, más bien, se gana cuando la otra persona aprende
a través de ti.

No cambiemos eso de esta lista. Que las ganas de discutir de forma sana y
constructiva, o de aportar a la gente que menos sabe o que se adentra en
algo en particular, sea lo que prime acá.

Saludos cordiales.

2017-03-27 12:19 GMT-03:00 Sherab Giovannini :

> Hola Mario,
>
> Valoro mucho los años que llevas en esta lista, aunque en este caso no
> creo que trascienda más allá del rencor de situaciones concretas. Lo que
> hablamos existe dentro del marco "experto" vs "aprendiz" y es algo que se
> repite constantemente, hay matices que pueden inclinar la balanza más hacia
> un lado que hacia el otro, pero la batalla es siempre la misma; El aprendiz
> quiere su respuesta y el experto quiere que demuestre que ha trabajado más
> en su pregunta, elaborándola. Más allá de eso podemos escribir el Quijote,
> pero bien sabemos todos de qué estamos hablando.
>
> No era mi intención alardear de ascendientes, me críe en esas tres
> culturas y lo dije para expresar que tu argumento sobre Europa no lo
> comparto, sino todo lo contrario. Creo que es más un contraste de cultura.
> Demografía no es Geografía, yo soy Caucásico y tu deberías de serlo aunque
> aparentemente no apostaría por ello.
>
> Hombre, si le hablas de un contexto en concreto a una persona qué menos
> que referenciarle cuando tu propósito es argumentar. Si todo se resuelve
> con un busca en google o en la wikipedia un par de keywords programemos un
> bot que automáticamente te redirija a una búsqueda por keywords del
> contenido de tu mensaje :).
>
> Por la vez que sea, diré que prácticamente no escribo en esta lista, me
> limito a leer las cosas interesantes que se cuecen sin participar
> demasiado. Pero tu agresividad es reiterada, y pienso que si yo estuviera
> en tu lugar me gustaría que la gente me lo dijese y así evitar conflictos
> futuros.
>
> Un saludo
>
> El 27 de marzo de 2017, 16:47, Mario Lacunza 
> escribió:
>
>> Hola Sherab,
>>
>> Te voy respondiendo en orden:
>>
>> Aquí cuando te mandaban a leer preguntas inteligentes la mayoría lo hacía
>> con la intención q yo decía y tengo muchos años en esta lista.
>>
>> Te gané yo tengo 4 razas :) Vasco, italiana, inglesa y francesa. Y ya
>> dije q no es mi intención ser ofensivo sino directo.
>>
>> No hay drama para mí, acaso tengo q hacerle la búsqueda también? Creo q
>> cualquiera puede hacer una simple búsqueda x dos keywords sencillas.
>>
>> Por tercera vez no es MI INTENSIÓN ser ofensivo sino directo.
>>
>> Enviado desde mi LG G4
>>
>> El 27 mar. 2017 9:13 AM, "Sherab Giovannini" 
>> escribió:
>>
>> Hola Mario,
>>
>> Ya que haces alusiones a la lista en general, lo usaré como excusa barata
>> para escribirte yo también además de Raúl.
>>
>> Generalmente cuándo le pides a alguien que elabore más una pregunta no
>> das a entender que no tiene intelecto suficiente para preguntar, sino que
>> no ha trabajado suficientemente en ella como para que la gente considere
>> que su altruismo está justificado.
>>
>> No se en qué parte de Europa habrás vivido, pero como Italo-Alemán que
>> vive en España te puedo asegurar que tu modo de hablar no es directo, es
>> ofensivo; y eso quien lo practica lo hace a nivel global, no
>> particularmente Europeo. Bueno, quizás los británicos sí son un poco así a
>> veces ;).
>>
>> Sí hay drama en referenciar a Google o Wikipedia cuándo no estás
>> precisamente haciendo referencia a ningún artículo/párrafo en particular.
>>
>> Y una vez más, como ya Raúl te ha especificado con completo detalle es
>> esa agresividad que imprimes en tus frases la que se podría catalogar como
>> ofensiva.
>>
>>
>>
>> El 27 de marzo de 2017, 15:58, Mario Lacunza 
>> escribió:
>>
>>> Hola Raúl,
>>>
>>> No pongo su nombre xq tampoco lo hizo él y más bien me puso
>>> gratuitamente un apodo cosa q yo no hice.
>>>
>>> No soy ofensivo sino directo, he vivido muchos años en Europa en un país
>>> no latino y estoy acostumbrado a decir las cosas así, he notado q a los
>>> latinos les gusta q les"doren la píldora"cómo decimos en Perú, pero para mi
>>> lo blanco es blanco y no sé como decirlo distinto.
>>>
>>> Así mismo no veo xq el drama xq referencie a Google y Wikipedia, antes
>>> en esta lista mandaban a los novatos sin más a leer "preguntas
>>> inteligentes" lo cual si es ofensivo al dar entender q 

Re: [Python-es] Conocimientos

2017-03-27 Por tema Sebastián Arancibia
Nunca comento acá pero siempre los leo.

Que yo sepa, en esta lista no solamente hay gente erudita en Python o
lenguajes de programación en general o incluso en temas como servidores,
internet, etc. Esta es una lista de Python, donde se hablan cosas
relacionadas a dicho lenguaje de programación, independiente de que la
gente que comente sepa o sea especialista en Python. Por lo que no veo
ofensa en la "ignorancia". ¿O usted, don Mario, nació sabiendo todos los
temas que conoce? Por cierto, es intención, con "C", pero no lo mandaré a
leer el diccionario de la RAE, prefiero corregirlo en forma directa y
educada.

Es una lástima que la discusión inicial sobre guiar a una persona que
quiere adentrarse en el mundo del desarrollo web haya derivado en otras
cosas que, para efectos de la pregunta inicial, no tienen relevancia alguna.

Saludos cordiales.

2017-03-27 11:47 GMT-03:00 Mario Lacunza :

> Hola Sherab,
>
> Te voy respondiendo en orden:
>
> Aquí cuando te mandaban a leer preguntas inteligentes la mayoría lo hacía
> con la intención q yo decía y tengo muchos años en esta lista.
>
> Te gané yo tengo 4 razas :) Vasco, italiana, inglesa y francesa. Y ya dije
> q no es mi intención ser ofensivo sino directo.
>
> No hay drama para mí, acaso tengo q hacerle la búsqueda también? Creo q
> cualquiera puede hacer una simple búsqueda x dos keywords sencillas.
>
> Por tercera vez no es MI INTENSIÓN ser ofensivo sino directo.
>
> Enviado desde mi LG G4
>
> El 27 mar. 2017 9:13 AM, "Sherab Giovannini" 
> escribió:
>
> Hola Mario,
>
> Ya que haces alusiones a la lista en general, lo usaré como excusa barata
> para escribirte yo también además de Raúl.
>
> Generalmente cuándo le pides a alguien que elabore más una pregunta no das
> a entender que no tiene intelecto suficiente para preguntar, sino que no ha
> trabajado suficientemente en ella como para que la gente considere que su
> altruismo está justificado.
>
> No se en qué parte de Europa habrás vivido, pero como Italo-Alemán que
> vive en España te puedo asegurar que tu modo de hablar no es directo, es
> ofensivo; y eso quien lo practica lo hace a nivel global, no
> particularmente Europeo. Bueno, quizás los británicos sí son un poco así a
> veces ;).
>
> Sí hay drama en referenciar a Google o Wikipedia cuándo no estás
> precisamente haciendo referencia a ningún artículo/párrafo en particular.
>
> Y una vez más, como ya Raúl te ha especificado con completo detalle es esa
> agresividad que imprimes en tus frases la que se podría catalogar como
> ofensiva.
>
>
>
> El 27 de marzo de 2017, 15:58, Mario Lacunza 
> escribió:
>
>> Hola Raúl,
>>
>> No pongo su nombre xq tampoco lo hizo él y más bien me puso gratuitamente
>> un apodo cosa q yo no hice.
>>
>> No soy ofensivo sino directo, he vivido muchos años en Europa en un país
>> no latino y estoy acostumbrado a decir las cosas así, he notado q a los
>> latinos les gusta q les"doren la píldora"cómo decimos en Perú, pero para mi
>> lo blanco es blanco y no sé como decirlo distinto.
>>
>> Así mismo no veo xq el drama xq referencie a Google y Wikipedia, antes en
>> esta lista mandaban a los novatos sin más a leer "preguntas inteligentes"
>> lo cual si es ofensivo al dar entender q no tenías el intelecto para
>> preguntar.
>>
>> En fin para q quede claro: no es mi intención ofender a nadie aquí.
>>
>> Enviado desde mi LG G4
>>
>>
>> El 27 mar. 2017 8:23 AM, "Raúl Cumplido" 
>> escribió:
>>
>> Hola Mario,
>>
>> Gracias por tomarte el tiempo en contestar. Desde mi cueva y sobretodo
>> utilizando la comunicación no verbal con gente que no conozco intento ser
>> lo menos agresivo posible en mis mis contestaciones. En tú segundo email le
>> dices a Narcís (sin ni siquiera poner su nombre):
>> - La ignorancia es atrevida y tú idea de cloud computing es totalmente
>> errada -- Lo cual interpreto como: Estás totalmente equivocado y eres un
>> ignorante
>> - lo q tu escribes tal vez debes postearlo en una lista de derecho
>> informático. -- Lo cual interpreto como: No deberías escribir aquí vete
>> a una lista de derecho (como si los abogados fueran inferiores)
>> - Igual cómo ya te lo dije cualquiera con mininos conocimientos puede
>> saber a quién le pertenece un servidor. --  Lo cual interpreto como: No
>> te enteras y te lo tengo que repetir, cualquiera debería saber esto.
>>
>> Es está agresividad en las respuestas a lo que me refiero.
>>
>> Y como no me gustan las polémicas y ni me va ni me viene desaparezco de
>> Internet por hoy:
>>
>> https://media.giphy.com/media/4pMX5rJ4PYAEM/giphy.gif
>>
>> Saludos,
>> Raúl
>>
>> 2017-03-27 13:39 GMT+01:00 Mario Lacunza :
>>
>>> Hola Raúl,
>>>
>>> Discrepo contigo, referenciar a Google y la Wikipedia como fuentes de
>>> conocimiento no tiene nada de ofensivo, sino por el contrario no es el
>>> método q usamos todos para aprender hoy en día?
>>>
>>> Enviado desde mi LG G4
>>>
>>> El 27 

Re: [Python-es] Enviar sms

2011-09-24 Por tema Sebastián Magrí
Revisa PySMS.

Saludos.

El día 24 de septiembre de 2011 09:32, Stalin Bello
stal...@gmail.com escribió:
 Buenos días lista, estoy implementando un sistema en python pero uno de los 
 requerimientos consiste en enviar un mensaje sms al usuario registrado o 
 cambio de estatus, me gustaría saber si alguien me puede ayudar con alguna 
 guía o manual sobre python con sms. Gracias.  Stalin bello
 Este mensaje ha sido enviado gracias al servicio BlackBerry de Movilnet
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/




-- 
Ing. Sebastián Ramírez Magrí
http://sebasmagri.alwaysdata.net/
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] [Fwd: Re: Consulta sobre PyGObject]

2011-04-04 Por tema Sebastián Magrí
El día 4 de abril de 2011 09:54, craf pyclut...@gmail.com escribió:
 - Mensaje reenviado 
 De: Francisco Javier Cuadrado fcocuadr...@gmail.com
 Reply-to: La lista de python en castellano python-es@python.org
 Para: La lista de python en castellano python-es@python.org
 Asunto: Re: [Python-es] Consulta sobre PyGObject
 Fecha: Mon, 4 Apr 2011 16:15:37 +0200

 El día 4 de abril de 2011 15:54, craf pyclut...@gmail.com escribió:
  Hola.
 
  Veo que en la pagina web de Pygtk se recomienda que las personas que
  comienzan a programar con PyGtk usen la instrospección PyGOject.
  Pregunta: ¿Alguien sabe que es PyGObject?, ¿Porqué es mejor?, y ¿donde
  se puede leer algo mas completo que lo que hay en la web de PyGtk?
 

 GObject es el «frameork» de programación orientada a objetos que se
 usa en Gtk, todo viene porque Gtk está escrito en C y se creó ese
 sistema para tener algo parecido a la programación orientada a
 objetos. Así que pyGObject serán los enlaces de python a este
 «framework».

 Según lo poco que he podido leer, se va a abandonar pyGtk en favor de
 la introspección de pyGObject, ya que con pyGObject puedes acceder a
 las novedades de Gtk 3 mientras que desde pyGtk no.

 Algo más de información: http://live.gnome.org/PyGObject

  Desde ya muchas gracias.
 
  Saludos.
 
  Cristian Abarzúa
 

 Siento no poder ayudarte más.


 Hola Francisco.

 Gracias por la respuesta. El problema con PyObject es que carece de una
 documentación mas o menos sencilla de seguir y con los ejemplos que
 vienen no acaba uno de entender para donde va la liebre.
 En la misma pagina dice At this point we need documentation, stability
 and users!, pero sin documentación básica no creo todavía que alguien
 lo prefiere antes que Pygtk, ya que este cuenta con bastante y buena
 información.

 De todas maneras, gracias de nuevo.

 Saludos.

 Cristian Abarzúa F.

 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


Saludos.

He estado trabajando un rato con PyGObject, uno migrando unas apps de
gtk2 a gtk3 y otro haciendo algunas pruebas y en realidad va bastante
bien. Aún hay algunas cosas que no abarca, básicamente aquello que no
soporte introspección, y la versión estable en las distribuciones
(creo que 2.21 en su mayoría) en realidad ya está medio obsoleta. Pero
desde 2.28 ya la cosa anda muy bien.

El mayor beneficio de usar GObject-Introspection es que se reduce la
carga de mantenimiento de un set de bindings para cada librería en el
stack de GTK, por ejemplo, Gtk+ (PyGTK), WebKit (pywebkitgtk), GLib,
GIO o Cairo (PyCairo), y la actualización de los mismos en cada nuevo
release. Ahora el mantenimiento va a GObject-Introspection, que
beneficia a todo lenguaje usándola con lo que ellos llaman bindings
automáticos a cada instante.

La migración es bastante fácil usando un script provisto por ellos
mismos que realiza las sustituciones de los imports y nombres de
variables a la 2to3 llamado pygi-convert [0]. Ver el código del script
da una pista de como funciona pygi.

Por otro lado, PyGTK anunció su último release mayor recientemente
[1], y aunque va a estar soportado durante un tiempo más, es bueno
comenzar a pensar en el futuro (Py3k y Gtk+-3)

[0] http://www.johnstowers.co.nz/blog/index.php/2011/04/03/end-of-an-era-pygtk/
[1] http://git.gnome.org/browse/pygobject/plain/pygi-convert.sh

-- 
Ing. Sebastián Ramírez Magrí
http://sebasmagri.com/
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Mapeo Objeto-Relaconal

2010-07-28 Por tema Sebastián
SQLAlchemy es bastante completo, a pesar de que a veces pueda parecer
un poco enredado, si se usa su modo declarativo todo se simplifica
bastante. Como opcion, se puede usar elixir para simplificar la
codificacion, a costa de perder un poco de versatilidad.

El ORM de Django es en realidad mi favorito, pero no esta desacoplado,
asi que si lo que buscas es para un proyecto web, puedes considerar
usar el framework para su desarrollo.

On 7/28/10, Sergio Soto Núñez scots4e...@gmail.com wrote:
 Hola lista, y listos.

 Estoy recopilando información para elegir una herramienta ORM para un
 proyecto.

 ¿ Que me recomendais?
 Gracias por anticipado
 __
 If it WalksLikeaDuck and talks like a duck, it must be a duck. David Thomas



-- 
---
Sebastián Ramírez Magrí
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/