Hemos desarrollado gran cantidad de algoritmos empleando tipos de datos simples como enteros, flotantes, cadenas de caracteres y estructuras de datos tipo lista.
Vamos a ver otra estructura de datos llamada Tupla.
Una tupla permite almacenar una colección de datos no necesariamente del mismo tipo. Los datos de la tupla son inmutables a diferencia de las listas que son mutables.
Una vez inicializada la tupla no podemos agregar, borrar o modificar sus elementos.
La sintaxis para definir una tupla es indicar entre paréntesis sus valores:
Definir varias tuplas e imprimir sus elementos.
tupla=(1, 2, 3) fecha=(25, "Diciembre", 2016) punto=(10, 2) persona=("Rodriguez", "Pablo", 43) print(tupla) print(fecha) print(punto) print(persona)
Como vemos el lenguaje Python diferencia una tupla de una lista en el momento que la definimos:
tupla=(1, 2, 3) fecha=(25, "Diciembre", 2016) punto=(10, 2) persona=("Rodriguez", "Pablo", 43)
Utilizamos paréntesis para agrupar los distintos elementos de la tupla.
Podemos acceder a los elementos de una tupla en forma similar a una lista por medio de un subíndice:
print(punto[0]) # primer elemento de la tupla print(punto[1]) # segundo elemento de la tupla
Es muy IMPORTANTE tener en cuenta que los elementos de la tupla son inmutables, es incorrecto tratar de hacer esta asignación a un elemento de la tupla:
punto[0]=70
Nos genera el siguiente error:
Traceback (most recent call last): File "C:/programaspython/ejercicio146.py", line 11, inpunto[0]=70 TypeError: 'tuple' object does not support item assignment
Utilizamos una tupla para agrupar datos que por su naturaleza están relacionados y que no serán modificados durante la ejecución del programa.
Desarrollar una función que solicite la carga del dia, mes y año y almacene dichos datos en una tupla que luego debe retornar. La segunda función a implementar debe recibir una tupla con la fecha y mostrarla por pantalla.
def cargar_fecha(): dd=int(input("Ingrese numero de dia:")) mm=int(input("Ingrese numero de mes:")) aa=int(input("Ingrese numero de año:")) return (dd,mm,aa) def imprimir_fecha(fecha): print(fecha[0],fecha[1],fecha[2],sep="/") # bloque principal fecha=cargar_fecha() imprimir_fecha(fecha)
En la función cargar_fecha cargamos tres enteros por teclado y procedemos a crear una tupla indicando entre paréntesis los nombres de las tres variables y procedemos a retornarla:
def cargar_fecha(): dd=int(input("Ingrese numero de dia:")) mm=int(input("Ingrese numero de mes:")) aa=int(input("Ingrese numero de año:")) return (dd,mm,aa)
En el bloque principal llamamos a la función cargar_fecha y el valor devuelto se almacena en la variable fecha (recordemos que la función devuelve una tupla):
fecha=cargar_fecha()
Definimos una función que recibe la tupla y procede a mostrar el contenido separado por el caracter "/":
def imprimir_fecha(fecha): print(fecha[0],fecha[1],fecha[2],sep="/")
Otra herramienta que nos proporciona Python es la conversión de tuplas a listas y viceversa mediante las funciones:
list(parametro de tipo tupla) tuple(parametro de tipo lista)
Definir una tupla con tres valores enteros. Convertir el contenido de la tupla a tipo lista. Modificar la lista y luego convertir la lista en tupla.
fechatupla1=(25, 12, 2016) print("Imprimimos la primer tupla") print(fechatupla1) fechalista=list(fechatupla1) print("Imprimimos la lista que se le copio la tupla anterior") print(fechalista) fechalista[0]=31 print("Imprimimos la lista ya modificada") print(fechalista) fechatupla2=tuple(fechalista) print("Imprimimos la segunda tupla que se le copio la lista") print(fechatupla2)
Podemos generar una tupla asignando a una variable un conjunto de variables o valores separados por coma:
x=10 y=30 punto=x,y print(punto)
tenemos dos variables enteras x e y. Luego se genera una tupla llamada punto con dos elementos.
fecha=(25, "diciembre", 2016) print(fecha) dd,mm,aa=fecha print("Dia",dd) print("Mes",mm) print("Año",aa)
El desempaquetado de la tupla "fecha" se produce cuando definimos tres variables separadas por coma y le asignamos una tupla:
dd,mm,aa=fecha
Es importante tener en cuenta de definir el mismo número de variables que la cantidad de elementos de la tupla.
# bloque principal empleado1=cargar_empleado() empleado2=cargar_empleado() mayor_sueldo(empleado1,empleado2)
ejercicio149.py def cargar(): lista=[] for x in range(5): valor=int(input("Ingrese valor")) lista.append(valor) return lista def retornar_mayormenor(lista): may=lista[0] men=lista[0] for x in range(1,len(lista)): if lista[x]>may: may=lista[x] else: if lista[x]<men: men=lista[x] return (may,men) # bloque principal lista=cargar() mayor,menor=retornar_mayormenor(lista) print("Mayor valor de la lista:",mayor) print("Menor valor de la lists:",menor) ejercicio150.py def cargar_empleado(): nombre=input("Ingrese el nombre del empleado:") sueldo=float(input("Ingrese su sueldo:")) return (nombre,sueldo) def mayor_sueldo(empleado1,empleado2): if empleado1[1]>empleado2[1]: print(empleado1[0],"tiene mayor sueldo") else: print(empleado2[0],"tiene mayor sueldo") # bloque principal empleado1=cargar_empleado() empleado2=cargar_empleado() mayor_sueldo(empleado1,empleado2)