Documentos de Académico
Documentos de Profesional
Documentos de Cultura
También puedo “enganchar los valores” en una sola línea usando la coma (,).
print(“Estamos en el año:”, año_actual)
Operación suma:
Resumen Pensamiento Computacional UBA XXI – Chiara López Angelini
VARIABLES: dato que puede cambiar o variar su valor. Se utiliza un nombre (o etiqueta)
para poder identificarlo y emplearlo; puede ser cualquier combinación de letras y
números. Débilmente “tipados”.
Nota: no se puede emplear el mismo nombre para dos datos diferentes; una variable puede
referenciar un sólo dato por vez. Por lo tanto, si uso un mismo nombre para un nuevo dato
se pierde el valor anterior (se pisa el dato anterior).
TIPOS PREDEFINIDOS DE DATOS:
OPERACIONES VÁLIDAS:
EDICIÓN DE TEXTO: transformar textos o cadenas de caracteres (string).
CADENA DE FORMATEO: cuando queramos introducir datos que van a cambiar (variables)
dentro de un texto constante, colocamos una f (puede ser f o F), a continuación, el texto
encerrado entre comillas (texto constante) y en el lugar en que queramos que aparezca el
dato variable colocamos el nombre de la variable encerrado entre {}.
FUNCIÓN DE CASTEO int(): convierte y devuelve el dato que se le envía entre paréntesis como
número entero. El dato enviado debe ser compatible con un valor numérico entero. Si lo que
recibe int() es un número con precisión decimal devuelve sólo su parte entera.
Programa sin int(). Toma los números como string y los concatena.
Programa con int(). Toma los números como enteros y los suma.
Nota: en Python podemos dejar comentarios que solo serán leídos por el programador; para
comentar una línea empleamos el símbolo # (todo lo que esté escrito a la derecha del símbolo
en la misma línea será ignorado en la ejecución). Si tenemos que explicar mucho y vamos a
utilizar varias líneas, sólo empleamos triple comilla “”” (simples o dobles) al comenzar el
comentario y lo cerramos con otro juego de triple comilla.
CREAR FUNCIONES PROPIAS: cuando trabajamos con funciones que no son predefinidas
antes de usarlas (invocarlas) debemos hacer que Python las conozca. Este proceso se llama
definición y se compone de:
- Encabezado o firma de la función: def seguido del nombre que le pondremos a la función.
Luego (); dentro del paréntesis indicaremos los nombres de todos los parámetros separados
Resumen Pensamiento Computacional UBA XXI – Chiara López Angelini
por coma. Los parámetros serán las variables en las que se van a copiar los datos que se
enviarán a la función (cuando sea invocada) para que pueda ejecutarse. Terminaremos con:
- Cuerpo: detallaremos qué hará la función. Para que Python sepa dónde acaba ese cuerpo,
debemos desplazarlo hacia la derecha un poco y cada línea del cuerpo deberá comenzar a la
misma altura (indentación). Para utilizar los parámetros uso la operación de concatenar
“+parámetro+”.
- Finalización: la función se termina cuando “corto el ámbito”, es decir, cuando concluyo con
la alineación o indentación del cuerpo.
Para invocar la función utilizo nombre(). Si utilizo parámetros será nombre(parámetro).
Nota: todas las sentencias que tienen una o varias líneas de encabezado (se llaman Sentencias
Estructuradas) tienen su cuerpo indentado.
Para que una función devuelva un resultado será necesario elegir uno de los datos que
maneja (sólo uno) y devolverlo a quién invocó a la función empleando la sentencia return.
Escribiremos return y el dato.
FUNCIÓN eval(): permite obtener el resultado de evaluar el texto que se le pasa como
argumento, siempre que el mismo sea compatible con una expresión aritmética válida.
Resumen Pensamiento Computacional UBA XXI – Chiara López Angelini
FUNCIÓN type(): indica el tipo de variable que estamos utilizando. Si lo combino con
print(type()), imprime el tipo de la variable en pantalla.
Introducción FUNCIÓN if y else: se utiliza cuando tengo una “pregunta”. If: “si pasa tal cosa,
hago esto”; Else: “sino, hago esto”.
Nota: el doble igual “==” se utiliza para conocer si un valor es igual a otro valor, es decir
devuelve un valor “true” (verdadero) o “false” (falso), dependiendo de la comparación.
FUNCIÓN repr(): convierte un entero int() en una cadena str() para poder concatenarlo con
otra cadena str().
FUNCIÓN format(): imprime con un cierto formato. Por ejemplo, para imprimir “Apellido,
Nombre” puedo usar: print(“{}, {}”.format(apellido, nombre), dentro de las {} iran las
variables en su correspondiente orden.
Nota: también puedo utilizar ‘f’ para acomodar variables. Por ejemplo: print(f”{apellido},
{nombre}”).
FUNCIÓN replace(): reemplaza caracteres. Por ejemplo, si quiero quitar letras de una palabra
puedo usar: palabra.replace(‘a’, ‘ ‘).
Nota:
- El paso debe ser un entero.
- valor_inicio está incluído en el rango; valor_fin NO.
- valor_inicio es opcional; si no se coloca se asume 0.
- paso es opcional; si no se coloca se asume 1.
- Si se desea rango decreciente se debe colocar un paso negativo.
- Si se coloca paso debe colocarse valor_inicio, aunque este último sea 0.
- Para construir un rango puedo usar expresiones más complejas (como operaciones), no
deben ser sólo constantes o variables. Lo único relevante es que el valor resultante sea
entero.
FUNCIÓN list(): crea una lista. Ejemplo: list([1, 2, 3]) o list([“a”, “b”, “c”]).
Resumen Pensamiento Computacional UBA XXI – Chiara López Angelini
s.join(iterable): arma una string uniendo los elementos de iterable e intercalándolos con s.
Ejemplo: tup=(‘a’,’b’,’c’)
print(‘-‘.join(tup))
Retorna:
a-b-c
s.ljust(ancho[,relleno]): justifica hacia la izquierda.
s.rjust(ancho[,relleno]): justifica a derecha.
s.lower(): devuelve s en minúsculas.
s.upper(): devuelve s en mayúsculas.
s.maketrans(x[,y[,z]]): asocia en un diccionario los correspondientes caracteres de las
cadenas x e y.
s.translate(pares): devuelve s con los caracteres asociados en el diccionario pares
remplazados.
Ejemplo: vocales="aeiou"
acentos="áéíóú"
texto="murcielagos"
parejas=texto.maketrans(vocales,acentos)
print(texto.translate(parejas)
Retorna:
Múrcíélágós
s.replace(antes,ahora[,cantidad]): reemplaza el substring de antes por el de ahora.
s.strip(): elimina los espacios del inicio y fin del string.
s.lstrip(): elimina los espacios del inicio.
s.rstrip(): elimina los espacios del fin.
s.swapcase(): devuelve s con las mayúsculas convertidas en minúsculas y viceversa.
s.split([separador[,maximaDivision]]): devuelve una lista cuyos elementos son las partes del
texto separadas por separador. Si se omite separador toma blancos.
s.rsplit([separador[,maximaDivision]]): ídem a derecha.
s.startswith(prefijo[,desde[,hasta]): devuelve True si s comienza con prefijo, si no False.
s.endswith(sufijo[,desde[,hasta]): devuelve True si s termina con sufijo, si no False.
s.zfill(ancho): rellena con ceros a la izquierda hasta el ancho.
s.title(): devuelve s en minúsculas con cada palabra inicializada en mayúsculas.
s.isnumeric(): devuelve True si s es numérico, si no False.
s.isalnum(): devuelve True si s es alfanumérico, si no False.
Resumen Pensamiento Computacional UBA XXI – Chiara López Angelini
Si efectivamente queremos tener dos estructuras separadas para que al modificar los
datos de una se preserven los datos originales en otra debemos forzar su copia; para
esto utilizamos el método copy(), que copiará los contenidos de la lista “a” en otra
parte de la memoria.
MÉTODO copy(): b=a.copy().
MÉTODOS DE LA CLASE LIST
MÉTODOS PARA AGREGAR ELEMENTOS A LISTAS: append(), insert(), extend().
MÉTODOS PARA QUITAR ELEMENTOS DE LAS LISTAS: pop(), remove(),clear().
miLista.append(valor): agrega el elemento valor al final de miLista.
miLista.insert(posic,valor): inserta el elemento valor en la posición posic.
miLista.extend(otraLista): agrega al final de miLista otraLista.
miLista.pop([índice]): quita de miLista el elemento de la posición índice. Si no se usa este
parámetro, quita el último elemento. Este método devuelve el valor retirado.
miLista.remove(valor): quita de miLista el elemento valor.
miLista.sort([reverse=True][,key=función]): ordena miLista; si se emplea el parámetro
reverse: en orden descendente; si se usa key, con criterio de ordenamiento función.
miLista.reverse(): invierte el orden de miLista (el primero pasa a ser el último).
miLista.count(valor): cuenta la cantidad de apariciones de valor en miLista.
miLista.index(valor): devuelve la posición de la primera aparición de valor en miLista.
Nota: todas las funciones y métodos que no devuelven nada (no hay return en su cuerpo)
devuelven la constante nula NONE.
ACCEDER A ELEMENTOS DE TUPLAS Y LISTAS
Para poder acceder a objetos individuales que están dentro de otros se debe referenciar cada
nivel por separado, de izquierda a derecha, siguiendo el orden desde el más externo al más
interno. Contando la posición inicial como [0].
“DESEMPAQUETAMIENTO”
Resumen Pensamiento Computacional UBA XXI – Chiara López Angelini
ORDENAMIENTO DE ESTRUCTURAS
FUNCIÓN sorted(): se puede aplicar a listas, tuplas o strings. No toca la estructura y devuelve
una versión ordenada (una lista).
MÉTODO sort(): unicamente aplicable en listas. Modifica la lista sobre la que se aplica el
ordenamiento y no devuelve nada (NONE).
Todos los elementos de la secuencia a ordenar deben ser comparables; es decir, deben tener
tipos compatibles para comparación (números con números, string con string, etc.). Si no se
pueden comparar entre si, no hay forma de decidir cuál es menor o mayor.
Resumen Pensamiento Computacional UBA XXI – Chiara López Angelini
MÉTODO reverse(): aplicable a listas; tanto sort() como sorted() disponen de este argumento
opcional, que por defecto está seteado en False. Si deseamos ordenar una lista o secuencia
en forma descendente bastará con prender en True este parámetro.
Nota: estas son funciones comprimidas; todo el bucle queda incluido en la función. Para
simplificar sus salidas, aplicamos un casteo y convertimos la salida a lista.
DICCIONARIOS (TYPE DICT): estructura mutable que permite mapear un valor (clave) con un
grupo de datos. De este modo, si precisamos acceder a un valor en particular, no necesitamos
indicar su posición (de hecho, no la sabremos), sólo indicando su valor saltamos directamente
a él. Es decir, empleamos el dato como clave de acceso. Ubica sus elementos en memoria de
acuerdo al resultado que obtiene al aplicar una función de cálculo a su clave.
Un diccionario también se denomina como Estructura Hashable o con acceso hash; haciendo
referencia al nombre que se le da a los algoritmos de cálculo de direcciones para acceso
directo a la información (Algoritmos Hash).
Un diccionario Python se escribe como una colección de pares, separados por ‘:’, entre llaves
{}. Para referenciar a cualquier valor vinculado a una clave sólo se requiere indicar la clave en
lugar de la posición, utilizando corchetes [].
Para sumar un elemento a un diccionario no necesitamos hacer lugar como en las listas.
Simplemente asignamos el par clave:valor. Pero si la clave ya existía, el valor anterior es
pisado. Sintaxis: diccionario[clave]=valor.
Nota: las claves de un diccionario pueden ser números, booleanos, strings, tuplas y cualquier
tipo de Python que NO admita cambios (inmutable). No pueden cambiar, porque si no,
cambiaría el resultado de la función hash aplicada a ellas y se debería reubicar la información.
Por contraposición, los datos o valores vinculados a una clave pueden ser de cualquier tipo
simple o estructurado (listas y diccionarios quedan incluidos acá).
MÉTODOS DE LA CLASE DICT
d.clear(): elimina todos los elementos de d.
d.pop(clave): remueve el par clave:valor del diccionario y devuelve valor. Si la clave no está
da error.
d.popitem(): remueve y devuelve cualquier par clave:valor. Si d está vacío da error.
Resumen Pensamiento Computacional UBA XXI – Chiara López Angelini
ORDENAMIENTO DE DICCIONARIOS
Para ordenar un diccionario podemos armar una lista de claves, ordenarla (utilizando la
función sorted()), y luego emplear esa lista para acceder a los datos del diccionario.
Llamamos a la lista ordenada: Índice.
UNIDAD 5: archivos y manejo de errores.
ARCHIVOS: Estructuras de Datos persistentes; perduran más allá de la vida de quien las
genera. Estos se guardan en dispositivos que administran datos no volátiles; no desaparecen
cuando se apaga el equipo. Los archivos se emplean para compartir información entre
usuarios, equipos, etc.
Los datos se graban como archivos, con un nombre, una extensión (por ejemplo, txt o csv) y
una organización interna conveniente, con el fin de que “sobrevivan” a la ejecución corriente
y poder utilizarlos a futuro.
BUFFERS: “miniespacios” de intercambio entre un programa y un archivo. Los archivos
contienen grandes volúmenes de datos, por ello, se copian sus datos por partes en la MI; a
medida que modificamos información, resguardamos una copia en el archivo. Como ya se
sabe que vamos a estar trayendo y enviando datos al archivo de manera continua, en lugar
de generar un montón de variables, el SO reserva una zona de memoria (que está dentro de
la región del programa que emplea el archivo) y la establece como el canal de comunicación.
Para esto, los SO implementan un sistema de tráfico de intercambio, lectura y escritura en
bloque. Es decir, si el programa necesita un dato en particular, no se trae sólo ese dato, sino
todo un bloque de información.
ABRIR ARCHIVO: proceso de petición al SO para que defina o asigne un buffer (preparar el
canal de comunicación); se utilizan datos relevantes, como nombre, ubicación en la
Resumen Pensamiento Computacional UBA XXI – Chiara López Angelini
estructura de directorios, qué haremos con el archivo, etc. Además, se le asigna un nombre
interno (alias) para referenciarlo dentro del programa, ya que un mismo programa puede
abrir simultáneamente todos los archivos que necesite.
PRIMITIVAS GENERALES
FUNCIÓN open(): abre un archivo en Python; le solicita al SO que establezca el vínculo de
trabajo y devuelva la dirección de inicio del buffer del archivo. Tal dirección debe ser
guardada en una variable, ya que será el nombre interno del archivo desde ese momento.
Una vez abierto, referenciamos al archivo por su nombre interno o alias. Esta función abre el
archivo con la codificación predeterminada del SO. Sintaxis:
open(“nombre_completo_archivo”,modo)
PARÁMETRO encoding: acompaña a la función open(); nos asegura que el archivo sea abierto
correctamente con la codificación deseada. Sintaxis:
open(“nombre_completo_archivo”,modo,encoding=codificación)
MÉTODO close(): cierra el archivo, obligándolo a grabar todo lo que haya quedad pendiente
y liberando espacio del buffer. Sintaxis:
nombre_interno_archivo.close()
MODOS
‘r’ = lectura.
‘r+’ = lectura/escritura.
‘w’ = sobreescritura/reescritura. Si no existe un archivo, se creará.
‘a’ = añadir. Escribe al final del archivo.
Nota: por defecto, la conexión se abre en modo lectura.
ARCHIVOS PLANOS: archivos de texto simple, texto sencillo o texto sin formato; archivos
informáticos que contienen únicamente texto formado solo por caracteres que son legibles
por humanos y carece de cualquier tipo de formato tipográfico. Por ejemplo, archivos txt o
csv.
MÉTODOS DE ARCHIVOS DE TEXTO (TYPE TXT)
MÉTODOS DE LECTURA: read(), readline(), readlines().
MÉTODOS DE ESCRITURA: write(), writelines().
arch.read(): permite leer una determinada cantidad de bytes, si no se pone nada, lee hasta
el final.
arch.readline(): lee la siguiente línea (caracteres hasta el próximo \n).
arch.readlines(): permite leer varias líneas, si no se indica nada, lee todas las que falten.
Devuelve una lista de cadenas del contenido del archivo.
Resumen Pensamiento Computacional UBA XXI – Chiara López Angelini
ARCHIVOS DE TEXTO – COMMA SEPARATED VALUES (TYPE CSV): el formato csv se refiere a
“valores separados por comas”. El carácter de separación de campos puede variar entre
coma o punto y coma (‘,’ o ‘;’) dependiendo del programa que lo abre.
Estos archivos están asociados a la creación de tablas de contenido (en filas y columnas).
Usualmente se utiliza Excel para su apertura.
Nota: para averiguar qué carácter de separación se debe emplear en un programa, puedo
generar un archivo csv en una Planilla y luego abrirlo en un editor simple de texto, donde
figurarán los símbolos que separan los campos. Python utiliza ;.
Puedo “procesar” o “transformar” los datos del archivo para que se impriman con otra
estructura.
MANEJO DE ERRORES
El ingreso de datos es uno de los puntos de mayor frecuencia de errores y es el lugar más
económico donde se pueden detectar y salvar los mismos. Para intentar disminuir la tasa de
errores en el ingreso se puede simplificar el formato de los datos o adaptarlos a sistema de
lectura automática (códigos de barra, qr, etc.), y/o validar los ingresos.
Resumen Pensamiento Computacional UBA XXI – Chiara López Angelini