|
| 1 | +''' * EJERCICIO: |
| 2 | + * - Muestra ejemplos de creación de todas las estructuras soportadas por defecto en tu lenguaje. |
| 3 | + * - Utiliza operaciones de inserción, borrado, actualización y ordenación. |
| 4 | + * |
| 5 | + * DIFICULTAD EXTRA (opcional): |
| 6 | + * Crea una agenda de contactos por terminal. |
| 7 | + * - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos. |
| 8 | + * - Cada contacto debe tener un nombre y un número de teléfono. |
| 9 | + * - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación |
| 10 | + * los datos necesarios para llevarla a cabo. |
| 11 | + * - El programa no puede dejar introducir números de teléfono no númericos y con más de 11 dígitos. |
| 12 | + * (o el número de dígitos que quieras) |
| 13 | + * - También se debe proponer una operación de finalización del programa.''' |
| 14 | + |
| 15 | +# Creación de estructuras de datos |
| 16 | +# Listas |
| 17 | +list=[1,2,3,4,5] |
| 18 | +print("Lista:",list) |
| 19 | +# Inserción |
| 20 | +list.append(6) |
| 21 | +print("Lista con inserción:",list) |
| 22 | +# Borrado |
| 23 | +list.remove(6) |
| 24 | +print("Lista con borrado:",list) |
| 25 | +# Actualización |
| 26 | +list[1]=0 |
| 27 | +print("Lista con actualización:",list) |
| 28 | +# Ordenación |
| 29 | +list.sort() |
| 30 | +print("Lista ordenada:",list) |
| 31 | +# Inversión |
| 32 | +list.reverse() |
| 33 | +print("Lista invertida:",list) |
| 34 | +# acceso |
| 35 | +print("Elemento en la posición 2:",list[2]) |
| 36 | +print('Tipo :' , type(list)) |
| 37 | + |
| 38 | +# Tuplas |
| 39 | +tuple_=(1,2,3,5,4) |
| 40 | +print("Tupla:",tuple_) |
| 41 | +# No se pueden modificar, borrar o actualizar |
| 42 | +# Ordenación |
| 43 | +tuple2=sorted(tuple_) # devuelve una lista ordenada |
| 44 | +tuple=tuple(sorted(tuple_)) # convierte la lista ordenada en tupla |
| 45 | +print("Tupla ordenada:",tuple) |
| 46 | +# acceso |
| 47 | +print("Elemento en la posición 2:",tuple[2]) |
| 48 | +print('Tipo :' , type(tuple)) |
| 49 | + |
| 50 | +# Diccionarios |
| 51 | +dict_={"Nombre":"Santiago","Apellido":"Bailleres"} |
| 52 | +print("Diccionario:",dict_) |
| 53 | +# Inserción |
| 54 | +dict_["Edad"]=25 |
| 55 | +print("Diccionario con inserción:",dict_) |
| 56 | +# Borrado |
| 57 | +del dict_["Edad"] |
| 58 | +print("Diccionario con borrado:",dict_) |
| 59 | +# Actualización |
| 60 | +dict_["Nombre"]="Santiago Bailleres" |
| 61 | +print("Diccionario con actualización:",dict_) |
| 62 | +# Ordenación |
| 63 | +dict2=sorted(dict_) # devuelve una lista ordenada |
| 64 | +dict3=dict(sorted(dict_.items())) # es necesario poner .items()? |
| 65 | +# si no se pone .items() da error porque no se puede ordenar un diccionario |
| 66 | +# convierte la lista ordenada en diccionario |
| 67 | +print("Diccionario ordenado:",dict3) |
| 68 | +# acceso |
| 69 | +print("Valor de la clave 'Nombre':",dict_["Nombre"]) |
| 70 | +print('Tipo :' , type(dict_)) |
| 71 | +dicc= {1: 2, 2: 4, 3: 1} |
| 72 | +dicc=dict(sorted(dicc.items())) #se puede ordenar un diccionario por clave o por valor |
| 73 | +print('Diccionario ordenado por clave:',dicc) |
| 74 | +# si se ordena por valor se debe hacer asi: |
| 75 | +dicc=dict(sorted(dicc.items(), key=lambda x: x[1])) # x[1] es el valor de cada par clave-valor |
| 76 | +print('diccionario ordenado por valor:',dicc) |
| 77 | +# si se quieren reestablecer las claves se puede hacer asi: |
| 78 | +dicc=dict(enumerate(dicc.values(),1)) # se enumeran los valores empezando en 1 |
| 79 | +print('diccionario con claves reestablecidas:',dicc) |
| 80 | + |
| 81 | +# Conjuntos |
| 82 | +set={1,2,3,4,5} # un conjunto no puede tener elementos duplicados y no tiene orden |
| 83 | +# es util para eliminar duplicados de una lista o tupla y para realizar operaciones de conjuntos |
| 84 | +# como union, interseccion, diferencia, etc. |
| 85 | +print("Conjunto:",set) |
| 86 | +# Inserción |
| 87 | +set.add(6) |
| 88 | +print("Conjunto con inserción:",set) |
| 89 | +# Borrado |
| 90 | +set.remove(6) |
| 91 | +print("Conjunto con borrado:",set) |
| 92 | +# Actualización |
| 93 | +set.add(0) |
| 94 | +print("Conjunto con actualización:",set) |
| 95 | +# Ordenación |
| 96 | +# no se puede ordenar un conjunto |
| 97 | +# acceso |
| 98 | +# no se puede acceder a un elemento por su posición |
| 99 | +print('Tipo :' , type(set)) |
| 100 | +# Operaciones de conjuntos |
| 101 | +set2={4,5,6,7,8} |
| 102 | +print("Conjunto 2:",set2) |
| 103 | +print("Union:",set.union(set2)) |
| 104 | +print("Intersección:",set.intersection(set2)) |
| 105 | +print("Diferencia:",set.difference(set2)) |
| 106 | +print("Diferencia simétrica:",set.symmetric_difference(set2)) |
| 107 | +print("Subconjunto:",set.issubset(set2)) # para que sea subconjunto todos los elementos de set deben estar en set2 |
| 108 | +print("Superconjunto:",set.issuperset(set2)) # para que sea superconjunto todos los elementos de set2 deben estar en set |
| 109 | +print("Disjuntos:",set.isdisjoint(set2)) # si no tienen elementos en común |
| 110 | + |
| 111 | +# EXTRA |
| 112 | +'''Crea una agenda de contactos por terminal. |
| 113 | + * - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos. |
| 114 | + * - Cada contacto debe tener un nombre y un número de teléfono. |
| 115 | + * - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación |
| 116 | + * los datos necesarios para llevarla a cabo. |
| 117 | + * - El programa no puede dejar introducir números de teléfono no númericos y con más de 11 dígitos. |
| 118 | + * (o el número de dígitos que quieras) |
| 119 | + * - También se debe proponer una operación de finalización del programa.''' |
| 120 | +# Agenda de contactos |
| 121 | +def mi_agenda(): |
| 122 | + agenda={} |
| 123 | + while True: |
| 124 | + print('') |
| 125 | + print('1. Buscar contacto') |
| 126 | + print('2. Insertar contacto') |
| 127 | + print('3. Actualizar contacto') |
| 128 | + print('4. Eliminar contacto') |
| 129 | + print('5. Mostrar agenda') |
| 130 | + print('6. Salir') |
| 131 | + option=input('\nSeleccione una opción: ') |
| 132 | + if option=='1': |
| 133 | + name=input('Ingrese el nombre del contacto que desea buscar: ') |
| 134 | + if name in agenda: |
| 135 | + print(f'Nombre: {name}, Teléfono: {agenda[name]}') |
| 136 | + else: |
| 137 | + print('Contacto no encontrado') |
| 138 | + elif option=='2': |
| 139 | + name= input('Ingrese el nombre del contacto que desea insertar: ') |
| 140 | + phone=input('Ingrese el teléfono del contacto: ') |
| 141 | + if phone.isdigit() and len(phone)<=11 and len(phone)>0: |
| 142 | + agenda[name]=phone |
| 143 | + print('Contacto insertado') |
| 144 | + else: |
| 145 | + print('El número de teléfono debe ser numérico y tener máximo 11 dígitos') |
| 146 | + elif option=='3': |
| 147 | + name=input('Ingrese el nombre del contacto que desea actualizar: ') |
| 148 | + if name in agenda: |
| 149 | + phone=input('Ingrese el nuevo teléfono del contacto: ') |
| 150 | + if phone.isdigit() and len(phone)<=11 and len(phone)>0: |
| 151 | + agenda[name]=phone |
| 152 | + print('Contacto actualizado') |
| 153 | + else: |
| 154 | + print('El número de teléfono debe ser numérico y tener máximo 11 dígitos') |
| 155 | + else: |
| 156 | + print('Contacto no encontrado') |
| 157 | + elif option=='4': |
| 158 | + name = input('Ingrese el nombre del contacto que desea eliminar: ') |
| 159 | + if name in agenda: |
| 160 | + del agenda[name] |
| 161 | + print('Contacto eliminado') |
| 162 | + else: |
| 163 | + print('Contacto no encontrado') |
| 164 | + elif option=='5': |
| 165 | + print('Agenda de contactos:') |
| 166 | + for name,phone in agenda.items(): |
| 167 | + print(f'Nombre: {name}, Teléfono: {phone}') |
| 168 | + elif option=='6': |
| 169 | + print('Saliendo de la agenda...') |
| 170 | + break |
| 171 | + else: |
| 172 | + print('Opción no válida, ingrese un número del 1 al 6') |
| 173 | +mi_agenda() |
| 174 | + |
| 175 | + |
| 176 | + |
| 177 | + |
0 commit comments