Curso de programación de criptomonedas con Python - 12. Bonus: consultar la base de datos que ha creado el bot (parte 5/5)

in #spanish7 years ago (edited)

En la clase anterior terminamos nuestro bot que recogía los datos de coinmarketcap y los guardaba en una base de datos muy simple. En esta lección vamos a construir una función que consulte la información de la base, de forma más o menos específica.

En esta clase aprenderemos una forma de trabajar con parámetros en las funciones: definiremos parámetros de entrada que tengan un valor por defecto. También veremos algo de tipos de datos booleanos.

Los parámetros de consulta serán el día del cual queremos extraer información, que es un archivo .txt, la criptomoneda y el dato que buscamos (puesto en el ranking, precio, capitalización de la moneda en USD... etc).

No debemos importar nada más, así que vayamos directamente al código:

def get_datos_base(dia, criptomoneda=None, info=None):
    archivo_ruta = ruta_diaria + dia + '.txt'
    archivo_abierto = open(archivo_ruta, 'r')
    datos = ast.literal_eval(archivo_abierto.read())
    if criptomoneda is not None:
        datos = datos[0][criptomoneda]
        if info is not None:
            datos = datos[info]
    return datos

Parámetros por defecto

En la primera línea vemos que la función tiene dos parámetros ya definidos de antemano: criptomoneda=None, info=None. El valor None es el único valor de un tipo llamado NoneType. Este quiere decir que está vacío. Todas las funciones en Python devuelven None si no devuelven otro valor. Gracias a esto vamos a poder prescindir de específicar los dos últimos valores.

En la segunda línea creamos una nueva variable que se referirá a la ruta del archivo que queremos abrir. En la tercera abrimos el archivo en modo r, o 'read', para leerlo. En la siguiente convertimos los datos que obtenemos en una estructura que no sea una cadena de texto, para poder trabajar con ella, en este caso una lista.

Condicional booleana 'is not'

En clases anteriores, hacíamos sentencias if/elif del tipo if tipo == 'diaria':. Lo contrario hubiera sido decirle if tipo != 'diaria':, y esto se habría referido al valor de 'diaria', es decir, estaríamos ordenando a Python comprobar si la cadena de texto es diferente a 'diaria'.

Ahora le digo a Python: "si no es None". No es exactamente lo mismo, para comprenderlo podeis ir a esta fantástica explicación. Puede parecer un poco enrevesado, pero pensando un poco es fácil de entender.

Lo que estamos haciendo es decirle a Python, si hay alguna criptomoneda en el parámetro de la función, la variable 'datos' se sobrescribe con el primer elemento de la lista (un diccionario), y apuntamos a la clave, una criptomoneda. Esto nos devuelve el diccionario de la criptomoneda que buscamos.

Luego tenemos otra condicional dentro de esta condicional. Aquí le decimos a Python: "si además de una criptomoneda se ha introducido una información como parámetro (por ejemplo: 'rank'), sobreescribe la variable 'datos' con la información de esa función.

Si no hemos introducido ninguno de estos dos parámetros, las condicionales no se ejecutarán. Para terminar la función retorna 'datos'.

Posibles aplicaciones del bot

Este bot lo podemos tener automatizado para que todos los días recopile la información que queremos, con algún programa de automatización de tareas. Puede servir de apoyo a un bot de trading o, trabajando conjuntamente con otro bot que publique en Steemit podremos hacer una publicación semanal con estadísticas del ecosistema blockchain. No hay límites, todo es cuestión de imaginar las posibilidades.

Fin del curso

Hasta aquí ha llegado el curso. Si ojeas mis otros posts verás que hay comenzado un siguiente proyecto de bot de arbitraje, pero he decidido pararlo porque creo que hay cosas prioritarias por hacer. Si quieres aprender a hacer uno estudia los bots open source que hay disponibles. Hemos dejado en el tintero muchas cosas más avanzadas, pero con lo visto hasta ahora tendrás un buen nivel para empezar a trabajar en tus propios proyectos con Python.

Espero que os haya servido de ayuda este curso. ¡Un abrazo y hasta la próxima!


Índice del curso:

1. Presentación
2. Cómo empezar: llamadas a APIs
3. Envolturas
4. Recopilar datos uno a uno: diccionarios
5. Recopilar datos uno a uno: listas
6. Funciones. Crear un bot informador de STEEM (parte 1/2)
7. Crear un bot informador de STEEM (parte 2/2)
8. Crear un bot recopilador de grandes cantidades de datos (parte 1/5)
9. Crear un bot recopilador de grandes cantidades de datos (parte 2/5)
10. Crear un bot recopilador de grandes cantidades de datos (parte 3/5)
11. Crear un bot recopilador de grandes cantidades de datos (parte 4/5)

Sort:  

This post has been linked to from another place on Steem.

Learn more about and upvote to support linkback bot v0.5. Flag this comment if you don't want the bot to continue posting linkbacks for your posts.

Built by @ontofractal

Coin Marketplace

STEEM 0.26
TRX 0.11
JST 0.033
BTC 64006.33
ETH 3077.08
USDT 1.00
SBD 3.87