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)