Fundamentos de Python – Colecciones de datos – Diccionario

Los diccionaros son una colección de elementos indexados, no ordenados y que se pueden modificar.

Por ejemplo, podemos crear un diccionario de colores así:

diccionario_colores = {"red":"rojo","blue":"azul","yellow":"amarillo"}

Como se puede observar, cada elemento va relacionado con su «traducción».

Para trabajar con los valores:

 print(diccionario_colores["red"])

Esto nos imprimirá «rojo».

Para añadir un dato al diccionaro, lo hacemos referenciando al valor índice y le asignamos el valor deseado:

 diccionario_colores["black"] = "negro"

Para eliminar un item con su valor, debemos usar «del»:

del(diccionario_colores["black"])

Fundamentos de Python – Colecciones de datos – Conjunto

Los conjuntos, son datos sin índice y editables. Se pueden añadir, eliminar, …

Se definen con llaves:

conjunto_colores = {'azul','rojo','verde'}

Y para visualizar el contenido:

print(conjunto_colores) # {'azul','rojo','verde'}

Para añadir un elemento al conjunto:

conjunto_colores.add("negro")

Si mostramos el contenido, nos lo presentará en orden alfabético:

print(conjunto_colores) # {'azul','negro','rojo','verde'}

Para eliminar un elemento, lo eliminamos por su nombre.

conjunto_colores.remove("azul")

Fundamentos de Python – Colecciones de datos – Tupla

Las tuplas de python, son un conjunto de datos inalterables. Una vez definidos no se pueden modificar.

Se definen con unos paréntesis:

tupla_colores = ('rojo','verde','amarillo')

Podemos obtener su longitud y así trabajar en bucles con len()

longitud = len(tupla_colores)

Como cualquier conjunto de datos, podemos trabajar con su índice:

print (tupla_colores[1]) # Verde

Fundamentos de Python – Colecciones de datos – Listas

En Python existen diferentes maneras de almacenamiento de datos en variables. Conocemos las variables con valores numéricos o de texto. En el caso del texto, podemos crear arrays que serían cadenas de texto y trabajar con ellas o las letras que lo componen.

Python también tiene un sistema para trabajar con colecciones de datos y según el tipo se permitirá trabajar de una manera u otra:

  • Listas: Colección de datos, uno detrás del otro, indexado y editable.
  • Tupla: Colección de datos inalterable.
  • Conjunto: Colección de datos, sin indexar y editable.
  • Diccionario: Colección de datos indexados, sin ordenar y editable.

Teniendo en cuenta esta variedad, hoy trataremos las listas de datos:

Listas:

Una lista es un conjunto de datos, establecidos uno detrás de otro a los que podemos acceder por un índice y podemos modificar su contenido, así como añadir o eliminar.

Para crear una lista utilizaremos este formato:

colores = ["rojo","amarillo","verde"]

Como es un conjunto de elementos indexados, podemos acceder a su contenido haciendo referencia a ese índice:

print(colores[1])

Al tratarse de un conjunto editable, podemos modificar contenido accediendo rectamente al conjunto:

colores[1] = "azul"

También podeos añadir contenido al final:

colores.append("naranja")

Podemos saber el índice máximo para trabajar con la lista, donde se nos devolverá un entero:

longitud = len(colores)

También podemos eliminar un valor, haciendo referencia al propio valor:

colores.remove("rojo")

Y si queremos, borrar el contenido de la lista:

colores.clear()

Fundamentos de Python – Operadores

Una vez tenemos nuestras variables definidas, podemos trabajar con ellas con los operadores habituales en programación:

  • Operadores Aritméticos: Para realizar cálculos matemáticos como suma, resta, división, multiplicación, resto, cociente y exponente
  • Operadores de Asignación: Para cambiar el valor de una variable, ya sea asignándole el valor directamente o calculándolo
  • Operadores de Comparación: Para poder hacer condiciones en nuestro programa, compararemos igualdad, diferencia, mayor o menor
  • Operadores de Lógica: Para cuando queremos incluir más de una comparación y que se cumplan todas las condiciones, alguna o ninguna
  • Operadores de Identidad: Para poder saber si dos variables son la misma
  • Operadores de Pertenencia: Para saber si un valor está dentro de una variable

Para entender mejor estos operadores, usaremos unos ejemplos para cada uno de ellos:

Operadores aritméticos:

Para hacer una suma, asignamos el resultado de sumar numero1 y numero2 a la variable suma

suma = numero1 + numero2

Para hacer una resta, asignamos el resultado de restarle numero2 a numero1 a la variable resta

resta = numero1 - numero2

Para hacer una multiplicación, asignamos el resultado de multiplicar numero1 por numero2 a la variable multiplicacion

multiplicacion = numero1 * numero2

Para hacer una división, asignamos el resultado de dividir numero1 entre numero2 a la variable division

division = numero1 / numero2

Para calcular el resto de una división, asignamos los decimales del resultado de dividir numero1 entre numero2 a la variable resto

resto = numero1 % numero2 # Los decimales de la división

Para calcular el cociente de una división, asignamos el resultado sin decimales de dividir numero1 entre numero2 a la variable cociente

cociente = numero1 // numero2 # Resultado de la división sin decimales

Para calcular la elevación de un valor a otro, asignamos el resultadode elevar numero1 numero2 a la variable exponente

exponente = numero1 ** numero2

Operadores de Asignación:

  • numero = 5 # Asignamos el valor 5 a la variable
  • numero += 4 # Incrementa 4 a su propio valor
  • numero -= 4 # Le restamos 4 a su propio valor
  • numero *= 4 # Multiplicamos por 4 su propio valor
  • numero /= 4 # Dividimos entre 4 su propio valor
  • numero **= 4 # Elevamos a 4 su propio valor (numero^4)

Operadores de Comparación:

  • == Igual
  • != Distinto
  • > Mayor que
  • < Menor que
  • >= Mayor o igual que
  • <= Menor o igual que

Operadores de Lógica:

Los operadores que se usan para las comparaciones lógicas son 3: and,or,not
Se usan para condicionar el resultado de más de una comparación (comparación 1) Operador (comparación 2)
En el caso del AND, será cierto el resultado si se cumplen las dos condiciones.
En el caso del OR, será cierto el resultado si se cumple una de las dos condiciones
El NOT invierte el resultado.

true and true = true
true and false = false
false and false = false
true or true = true
true or false = true
false or false = false
not true = false
not false = true
numero1 = 10
numero2 = 5
numero3 = 7
numero4 = 7

(numero1 > numero2) and (numero3 == numero4) # Es True
(numero1 < numero2) and (numero3 == numero4) # Es False
(numero1 > numero2) or (numero3 == numero4) # Es True
(numero1 < numero2) or (numero3 == numero4) # Es True
(numero1 < numero2) or (numero3 != numero4) # Es False
not(numero1 > numero2) # Es False
not(numero1 < numero2) # Es True

Operadores de Identidad:

Estos operadores nos sirven para saber si dos elementos son el mismo objeto. is, is not

Si creamos dos variables del tipo lista que contengan dos strings idénticos, no son la misma variable.

frutas1 = ['naranja','pera']
frutas2 = ['naranja','pera']
print (frutas2 is frutas1) # False Aunque contengan lo mismo, son diferentes variables

Si al inicializar una variable, la creamos a partir de otra, la estamos definiendo como idéntica:

frutas3 = frutas1
print (frutas3 is frutas1) # True. Son el mismo objeto
print (frutas3 is not frutas1) #Falso

Si modificamos el contenido de una variable, afecta a sus idénticas:

frutas3.append ('manzana') # Añadimos manzana a la lista de frutas
print (frutas3) #['naranja', 'pera', 'manzana']
print (frutas1) #['naranja', 'pera', 'manzana'] porque son el mismo objeto

Operadores de Pertenencia:

Sirven para verificar una variable contiene un valor. innot in

La sintaxis es: cosa in variable cosa not in variable. En estos casos, miramos si cosa está en el contenido de la variable o si cosa no está en el contenido de la variable respectivamente. Muy útil con variables que contengan listados de datos.

frutas1 = ['naranja','pera','manzana'] # Creamos una variable con un listado de cosas
frutas2 = 'pera' # Creamos una variable con una cosa
frutas3 = 'kiwi'
print(frutas2 in frutas1) # True, porque el contenido de frutas2 (pera) está en la lista de la variable frutas1
print(frutas2 not in frutas1) # False, porque el contenido de frutas2 (pera) SI está en la lista de la variable frutas1frutas3 = 'melocoton'
print(frutas3 not in frutas1) # True, porque no está en la lista

 

Fundamentos de Python – Variables

En python, las variables se definen automáticamente al usarlas por primera vez. Por ejemplo, para definir un string:

cadena = "abcdefghijk"

Al ejecutar esta línea, definimos una variable llamada «cadena» como un string, porque la hemos inicializado por primera vez con una cadena de carácteres.

Para imprimir el contenido de una variable, tan sencillo como:

print (cadena)

No es necesario indicar el tipo de variable ni nada.

Una vez inicializada la variable como cadena, podemos acceder a todas sus características y funciones directamente. Por ejemplo:

print (cadena.upper())

Con esta línea imprimimos el contenido de la cadena en mayúsculas.

Otro ejemplo sería trabajar con enteros:

primero = 10
segundo = 4

Aquí hemos definido dos variables de tipo entero con valores 10 y 4. Al tratarse de valores enteros, podemos usarlos como tal en cálculos:

suma = primero + segundo
resta = primero - segundo

En estos cálculos, hemos creado variables nuevas de tipo entero con el resultado correspondiente a la suma y la resta de los valores anteriores.

Si queremos imprimir solo una cadena o solo un numero, se pasan directamente al print.

print (numero)
print (cadena)

Si necesitamos mezclar variables en un print, hay varias maneras:

print ("Los valores sumados hacen: " + str(suma))
print ("El resultado de sumar {} mas {} es {}".format(primero, segundo, suma))

En el primer caso, convertimos una variable de tipo entero en cadena para concatenarla en el print.

Y en el segundo caso, convierte todos los valores en su posición para insertarlos en la cadena del print.

print (f"El resultado de la división es: {resultado}")
print (f"El resultado con dos decimales es: {resultado:1.2f}")

En este caso, hemos concatenado en el print unos valores con decimales y en la segunda línea hemos forzado a que tenga un formato de dos decimales

Nuevo crawler

Aquí os presento mi nuevo crawler:

 

Frontal Absima

Se trata de un Absima Khamba con dos velocidades y bloqueo independiente de diferenciales entre otras cosas.

Absima y RGT

Para futuro:

Plomar ruedas.

Aumentar tamaño neumáticos.

Aunque el RGT no se queda corto porque es una auténtica roca, este es una mejora en cuanto a características técnicas.

Fundamentos de Python – Instalación

Python es un lenguaje de programación de alto nivel compatible con multitudes de plataformas. Tu codigo se puede ejecutar sin problemas en windows, linux, mac, AIX, …

El proceso de instalación es realmente sencillo. Sólo hay que seguir unos sencillos pasos que encontraremos en la web oficial de Python: www.python.org

Allí podemos ir directamente a la sección de descargas y obtener la última versión del instalador.

En mi caso, con linux mint :

$ sudo apt-get install python3

Una vez instalado, ya podemos probar que entramos en el intérprete de python con el comando python3:

Captura de ejecución de python3

Ya tenemos en intérprete listo y podemos crear nuestro primer programa o probar que funciona correctamente.

Simplemente, tras «>>>» podemos escribir algo como: print(«Hola mundo»)

Prueba Hola mundo en intérprete

El intérprete nos imprimirá por pantalla «Hola mundo» tal y como lo hemos pedido.

Para salir, debemos usar la combinación de teclas CTRL+D.

Apuntes Bash #1

En esta entrada voy a dejar algunos apuntes del funcionamiento del Bash en linux.

¿Qué es Bash?

Wikipedia: GNU Bash o simplemente Bash (Bourne-again shell) es un lenguaje de órdenes y shell de Unix escrito por Brian Fox para el Proyecto GNU como un reemplazo de software libre para el shell Bourne.

Como es la principal interfaz que nos encontraremos en un entorno linux, considero que merece la pena tener estos apuntes a mano.

Se debe tener en cuenta que Bash se puede ejecutar en modo interactivo o no-interactivo. La principal diferencia para que lo entendamos fácilmente, es que en modo interactivo vamos dando las instrucciones nosotros con el teclado y vamos ejecutando los comandos uno a uno, mientras que el modo no-interactivo sería cuando ejecutamos un script y bash lo ejecuta secuencialmente sin que nosotros tengamos que intervenir.

En modo interactivo nos aparece el prompt antes del cursor, normalmente representado o terminado por «$». Si en su lugar tenemos «#», significa que estamos identificados en ese bash con la cuenta de superusuario (root). Este prompt es fácilmente modificable.

Una vez estamos en el prompt, podemos interactuar con bash usando el teclado. Para conocer rápidamente los comandos que están integrados en bash, podemos ejecutar la orden «man bash». Esta orden nos mostrará el manual del propio bash.

No voy a entrar en el uso del Bash en modo interactivo, ya que el gran potencial lo encuentro en la creación de sus scripts para automatizar procesos. Los que ya hayan tenido contacto con archivos batch de Microsoft o en cualquier lenguaje de programación, encontrarán muchas similitudes.

El archivo de comandos

Un script en bash, es un archivo de texto con propiedades de ejecución. Para conseguir estas propiedades, debemos asignarle el bit x al archivo mediante el comando chmod (chmod +x nombrearchivo.sh)

Gestión de variables:

  • VARIABLE=1 Inicialización de variable
  • export VARIABLE=1 Crear una variable de entorno
  • FECHA=`date` Asignar el resultado de un comando a una variable. En este caso la fecha del sistema.
  • unset VARIABLE Eliminar una variable
  • readonly VARIABLE Variable de solo lectura
  • ${VARIABLE-OTRACOSA} Si VARIABLE tiene valor se usa, si no se usa OTRACOSA
  • ${VARIABLE=COSA} Si variable no tiene valor, se le asigna COSA. No funciona con $1, $2, …

…..

Cadenas

  • Definimos la variable : NOMBRE=»JPerezF»
  • Concatenamos el contenido de la variable Hola JPerezF : echo «Hola $NAME»
  • Imprimimos una cadena Hola $NOMBRE : echo ‘Hola $NOMBRE’

EN CONSTRUCCIÓN

Primera reparación Crawler RGT

Recientemente he observado que el coche está inclinado lateralmente. No responden de la misma manera los amortiguadores de un lado que de otro.

Eso significa que el líquido de los amortiguadores no está bien. De hecho, una de las recomendaciones que corren por ahí cuando te compras un RTR es cambiar y rellenar bien de líquido los amortiguadores.

Esa recomendación va acompañada de engrasar los engranajes de los diferenciales, cosa que hice el primer día.

Ayer pedí aceite de silicona para el Crawler:

https://www.amazon.es/gp/product/B01LXXMJOS

He pedido con viscosidad 300 porque leí que era lo mejor para empezar con un crawler.

En cuanto llegue actualizo el hilo.

Pues finamente, ya he hecho el cambio. La sensación en la amortiguación es totalmente distinta. Tengo claro que el coche venía con otra viscosidad. El cambio ha sido una prueba que me ha dejado claro que los amortiguadores que lleva son sencillos. Siguen teniendo cierta inclinación y no me han dejado llenarlos del todo porque al intentar purgarlos sobresalía líquido.

Seguiré probando cosas.