Manejo de variables en Rocketbot
Guia práctica para entender el manejo de variables en Rocketbot
Uno de los top 5 errores que comete un desarrollador al construir un robot, está relacionado con el manejo de las variables.
Si bien la forma de trabajar es muy similar a Python y para algunos puede ser sencillo. Es importante entender algunas características para que puedas desarrollar con mayor fluidez.
Aquí te muestro alguno de los errores que posiblemente ya has visto y que explicaré mas adelante.
🌐Comunidad de RPA en Español
Si te interesa estar conectado con otros profesionales del mundo del RPA, te invito a unirte a nuestra comunidad en Whatsapp 👇
🤔Supuestos
En este post asumiré que ya conoces algunas temas básicps de Rocketbot para no tener que extenderme tanto con las explicaciones, asumiré que sabes acerca de:
Sintaxis para uso y asignación de variables
Creación de variables en Rocketbot
Algo de conocimiento en Python
🌀Tipos de variables
Las variables de Rocketbot no necesitan asignarse con un tipo de variable estático como otras herramientas o lenguajes de programación.
Si bien Rocketbot clasifica sus variables como General, Password, File, Folder, Array y Encrypt, esto no afecta al funcionamiento o manejo de la variable en los comandos, ya que esta clasificación es solamente visual para el ambiente de desarrollo.
Por otro lado, en los comandos de Rocketbot podemos utilizar 8 tipos de variables que vienen del lenguaje Python, y estas son:
int — Números enteros
float — Números decimales
bool — Tipo de dato lógico (True o False)
list — Estructura de datos ordenados o Array
dict — Estrucutura de datos desordenados o Array asociativos
set — Colección de datos desordenados con valores no duplicados
tuple — Secuencia de datos inmutables
🔗 Para más detalle, puedes ver la doc de python aquí 👉Data Structures
Puede ser que ya lo notaste, pero no incluí los string. Esto es porque en Rocketbot, no puedes utilizar una variable como string directamente, a menos que lo fuerces agregando algún tipo de comillas "{variable}" o '{string}'
Comandos con python vs comados sin python
Para poder entender como manejar las variables en Rocketbot, tienes que diferenciar los comandos que evaluan su contenido ejecutando python y los que no lo hacen.
Los comandos que no evalúan sus inputs con python (que son la mayoría de los comandos), reciben el contenido ingresado de forma literal. De esta forma no necesitas indicar si es un string o no, ya que no interesa el tipo de dato, sino el valor ingresado.
Por este motivo, en la mayoría de los comandos no puedes ingresar información como {list}[0],
siendo list= [1,2,3,4]. Ya que, en lugar de recibir el primer elemento de tu lista (el 1), recibirá literalmente [1,2,3,4][0]
.
⚠️ En los input de comando sin python, NUNCA debes agregar comillas a tu variable, a menos que el comando indique lo contrario
Los comandos que sí evalúan python deben ser tratados de forma diferente. De estos tipos de comandos solo existen, por ahora, solo cuatro:
Asignar variable (setvar) — Comando para asignar un valor a la variable que le indiques
IF (evaluateIf) — Bloque de comandos para tomar decisiones lógicas
While (evaluatewhile) — Bloque de comandos para ejecutar un bucle
For (for) — Bloque de comandos para iterar una variable o dato
Cada uno de estos comandos, evalúan directamente en Python el contenido que reciben, por lo que, si ingresas {list}[0]
no recibe literalmente [1,2,3,4][0]
como en el caso anterior, sino que ahora si recibirá un 1.
Como estos tipos de comandos evalúan en python, para nuestras variables de tipo texto (Ej. mensaje = Hola mundo), necesitamos indicar que son un string, ya que al intentar evaluar {mensaje}
, interpretará dos variables diferentes, Hola
y mundo
, generando un error.
Además de los comandos mencionados, por supuesto también puedes usar "Ejecutar archivo python" y “Ejecutar script python” para crear tu propio código.
Para este tipo de comando el funcionamiento es el mismo, tienes que agregar comillas a las variables de tipo string solamente
⚠️ Algunos utilizan la función de Rocketbot
GetVar()
para obtener el valor de una variable en su script python. Este método no lo recomiendo, ya que te devuelve todos tus valores como un string y tendrás que transformarlos nuevamente al tipo de dato original
Variables y funciones nativas de python
Los comandos que evalúan su condición en python, tienen la ventaja que puedes usar variables y funciones nativas de Python. Veamos algunas útiles:
range — Función para generar un rango de números. Es útil para usarlo en un for e iterar por una cantidad fija. Ej.
range(4)
→[0,1,2,3]
print — Función para imprimir en consola cualquier mensaje o variable. Útil para debugear en desarrollo cuando necesitamos saber el estado de una variable. Ej.
print({list})
max y min — Funciones para retornar el elemento mayor y menor de un iterable. Es útil para cálculos. Ej.
max({list})
→4; min({list})
→1
round — Función para redondear un número. Ej
round(2.675, 2)
→2.67
Casos particulares
Si bien Rocketbot está construído sobre Python, no todo el funcionamiento es igual a este lenguaje, ya que existe una interpretación propia antes de ejecutar el comando.
Condiciones en el bloque IF
En python, todo lo que coloquemos en un if se interpreta como un bool, de esta forma, no necesitamos colocar algo que sea estricamente True o False, podemos usar otro tipo de condiciones.
Las condiciones que python interpreta como False, aunque no lo sean literalmente, son: None, datos vacíos ("", [], {}, ())
y 0. Para los casos contrarios a estos, Python los interpreta como True. Por ejemplo, si hacemos if [1,2,3,4]
, para Python esto será True (porque no es [] → False).
En Rocketbot esto no ocurre, el bloque IF debe recibir una condición que al evualuar sea True, sino ejecutará las instrucciones del else
Iterables en el bloque FOR
Similar al caso anterior, en python podemos utilizar cualquier variable iterable para recorrer en un for. Podemos usar list, dict, tuple, set, etc.
Esto no ocurre en el bloque For de Rocketbot, ya que, aunque algunas estructuras de datos permiten iterarse, no todas son "suscriptable", lo que significa que no puedes llamar sus elementos por índice.
Como el comando itera utilizando un contador "count", al momento de iterar un dict_items, nos dará un error
Para solucionar esto, podemos convertir la estructura en una lista usando la función list()
Mutabilidad de datos
En la programación existe el concepto de mutabilidad, que es la capacidad de una variable o dato de cambiar su estado.
En python, tenemos datos mutables como: list o dict, y tenemos datos no mutables como str, tuple, set.
La mutabilidad la podemos observar bien en una lista cuando utilizamos, por ejemplo, el método append(). Este método cambia el estado de la lista, agregando un elemento extra.
Por otro lado, un string no es mutable, no podemos cambiar su estado sin crear una variable nueva. Si usamos el método replace y luego consultamos el string nuevamente, la variable sigue teniendo el mismo valor
En Rocketbot, todas las variables son inmutables. Esto quiere decir que no podemos cambiar su estado. Al ser las variables inmutables, solamente podemos "pisar" la variable con otro valor.
Es importate saber esto porque todos los métodos que mutan una variable, no los puedes utilizar en tus comandos de Rocketbot y tendrás que usar una alternativa
Y eso es todo por hoy. Si encontraste valor en este newsletter, considera alguna de estas cosas:
1) Suscribete al newsletter — Si aún no lo has hecho, considera convertirte en un suscriptor pago. Puedes ver más sobre los beneficios dando clic acá:
2) Lee con tus colegas — El mejor agradecimiento es tu recomendación. Comparte este artículo con tu compañero que le pueda interesar y consigue membresías gratuitas a través del programa de referido
Ten una gran fin semana! 🚀
Danilo