diff --git a/dia_03/01_index.py b/dia_03/01_index.py new file mode 100644 index 0000000..cdda418 --- /dev/null +++ b/dia_03/01_index.py @@ -0,0 +1,24 @@ + +print("# BUSCAR LA POSICIÓN DE UN CARACTER") +# CON index() PODEMOS ENCONTRAR LA POSICIÓN DE UN CARACTER EN UN STRING +mi_texto = "hola mundo" +posicion = mi_texto.index("o",0,11) +print(f"EJEMPLO: La posición del caracter \"o\" es {posicion}") + +# PREGUNTAR LETRA Y DAR POSICIÓN EN FRASE +pregunta_carater = input("PREGUNTA: De qué carater quieres saber la posición: ") +print(f"El carater \"{pregunta_carater}\" está en la posición \"{mi_texto.index(pregunta_carater)}\"") + +print("\n# SE PUEDE BUSCAR CON rindex PARA BUSCAR DE DERECHA A IZQUIERDA") +posicion_r = mi_texto.rindex("o") +print(f"EJEMPLO: La posición en búsqueda reversa del caracter \"o\" es {posicion_r}") + +print("\n# BUSCAR EL CARACTER DE UNA POSICIÓN") +# SABER LA LETRA DE UNA POSICIÓN +que_carater = mi_texto[3] +print(f"EJEMPLO: El carater en la posición \"3\" del string es la \"{que_carater}\"") + +# PREGUNTAR POSICIÓN Y DAR RESULTADO EN FRASE +pregunta_posicion = int(input("PREGUNTA: De que posición quieres saber el caracter: ")) +resultado_posicion = mi_texto[pregunta_posicion] +print(f"En la posición \"{pregunta_posicion}\" está el caracter \"{resultado_posicion}\"") diff --git a/dia_03/02_sub_strings.py b/dia_03/02_sub_strings.py new file mode 100644 index 0000000..5e0719b --- /dev/null +++ b/dia_03/02_sub_strings.py @@ -0,0 +1,32 @@ +# DISTINTAS POSIBILIDADES CON Sub-strings. slicing (rebanar) + +# Limitando la rebanada +print("# Limitando la rebanada") +texto = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ" +fragmento01 = texto[2:15] +print(fragmento01) + +# Hasta el final +print("# Hasta el final") +fragmento02 = texto[2:] +print(fragmento02) + +# Desde el inicio +print("# Desde el inicio") +fragmento03 = texto[:10] +print(fragmento03) + +# Con saltos de dos +print("# Con saltos de dos") +fragmento04 = texto[2:15:2] +print(fragmento04) + +# Con saltos de tres de prinicipio a fin +print("# Con saltos de tres de prinicipio a fin") +fragmento05 = texto[::3] +print(fragmento05) + +# Con saltos de dos desde el final +print("# Con saltos de dos desde el final") +fragmento06 = texto[::-2] +print(fragmento06) \ No newline at end of file diff --git a/dia_03/03_metodos.py b/dia_03/03_metodos.py new file mode 100644 index 0000000..13852f6 --- /dev/null +++ b/dia_03/03_metodos.py @@ -0,0 +1,53 @@ +""" Métodos en strings """ + +texto = "Este es el texto de Federico" + +# Mayúsculas +resultado01 = texto.upper() +print(resultado01) + +# Mayúsculas (Podemos determinar un índice) +resultado02 = texto[20].upper() +print(resultado02) + +# Mayúsculas +resultado03 = texto.upper() +print(resultado03) + +# Split (Separar dentro de una lista) +resultado04 = texto.split() +print(resultado04) + +# Split (Separar dentro de una lista) Se puede seleccionar el elemento separador +resultado05 = texto.split(" ") +print(resultado05) + +# Join +a = "Aprender" +b = "Python" +c = "es" +d = "genial" +unir = "-".join([a,b,c,d]) +print(unir) + +# Find +resultado06 = texto.find("F") +print(resultado06) + +## La diferencia de find con index es que +## si buscas un carácter que no existe no da error +## arroja el valor -1 +resultado07 = texto.find("g") +print(resultado07) + +# Reemplazar +resultado08 = texto.replace("Federico", "Manuel") +print(resultado08) + + +frase = "Si la implementación es difícil de explicar, puede que sea una mala idea." + +resultado001 = frase.replace("difícil","fácil") +resultado002 = resultado001.replace("mala","buena") + +print(resultado002) diff --git a/dia_03/04_string.py b/dia_03/04_string.py new file mode 100644 index 0000000..dcfe8dc --- /dev/null +++ b/dia_03/04_string.py @@ -0,0 +1,55 @@ +# Métodos de strings + +## Métodos de análisis + +print("Hola mundo".count("Hola")) + +print("Hola mundo".find("world")) + +print("C:/python36/python.exe".rfind("/")) + +print("Hola mundo".startswith("Hola")) + +print("abc123".isdigit()) + +print("1234".isnumeric()) + +print("1234".isdecimal()) + +print("abc123".isalnum()) + +print("abc123".isalpha()) + +print("abcdef".islower()) + +print("ABCDEF".isupper()) + +print("Hola mundo".isspace()) + +print("hola mundo".capitalize()) + +print("Hola mundo".encode("utf-8")) + +print("Hola mundo".replace("mundo", "world")) + +print("Hola Mundo!".lower()) + +print("Hola Mundo!".upper()) + +print("Hola Mundo!".swapcase()) + +print(" Hola mundo! ".strip()) + +print("Hola".center(10, "*")) + +print("Hola mundo!\nHello world!".split()) + +print("Hola mundo!\nHello world!".splitlines()) + +print("Hola mundo. Hello world!".partition(" ")) + +print("Hola mundo. Hello world!".rpartition(" ")) + +print(", ".join(["C", "C++", "Python", "Java"])) + + diff --git a/dia_03/05_propiedades.py b/dia_03/05_propiedades.py new file mode 100644 index 0000000..bf9fb9e --- /dev/null +++ b/dia_03/05_propiedades.py @@ -0,0 +1,37 @@ +#INMUTABLE +# Este código intenta cambiar un caracter del string, +# con lo que no permitirá, dará error + +# nombre = "Carina" +# nombre[0] = "K" +# print(nombre) + +#CONCATENAR +n1 = "Kari" +n2 = "na" +print(n1 + n2) + +# MULTIPLICAR +print(n1 * 5) + +# MULTILINEA +# Perfecto para poemas +poema = """ Mil pequeños peces blancos + como si hirviera + el color del agua.""" +print(poema) + +# VERIFICAR contenido. booleano +print("agua" in poema) + +# También se puede verificar si NO está +print("escorbuto" not in poema) + +# LONGITUD DE STRING +print(len(poema)) + +print(len("Otro ejemplo")) +print(len("Anticonstitucionalidades")) +print(len("electroencefalografistas")) +print(len("Esternocleidomastoideo")) + diff --git a/dia_03/06_listas.py b/dia_03/06_listas.py new file mode 100644 index 0000000..efb6c1a --- /dev/null +++ b/dia_03/06_listas.py @@ -0,0 +1,36 @@ +# LAS LISTAS +lista_1 = ["C", "C++", "Python", "Java"] +lista_2 = ["PHP", "SQL", "Visual Basic"] +lista_3 = ["d", "a", "c", "b", "e"] +lista_4 = [5, 4, 7, 1, 9] + +# Ver tipo de dato de las listas +print(type(lista_1)) + +# Concatenar listas +lista_1_2 = lista_1 + lista_2 +print(lista_1_2) + +# EN LAS LISTAS SE PUEDEN MODIFICAR LOS ELEMENTOS +# Agregar un elemento a la lista +lista_1.append("R") +print(lista_1) + +# Eliminar un elemento de la lista con el índice (Devuelve el valor eliminado) +print(lista_1.pop(4)) + +guardar_elemento = lista_1_2.pop(2) +print(guardar_elemento) + +# Ordenar los elementos de la lista +lista_3.sort() +print(lista_3) +# Cuidado que no devuelve nada, modifica la variable +guardar_sort = lista_3.sort() +print(guardar_sort) +# Es de tipo None, un objecto sin valor, que no es lo mismo que 0 +print(type(guardar_sort)) + +# Invierte el orden de los elementos (No es lo opuesto a sort) +lista_4.reverse() +print(lista_4) diff --git a/dia_03/07_diccionarios.py b/dia_03/07_diccionarios.py new file mode 100644 index 0000000..fa21025 --- /dev/null +++ b/dia_03/07_diccionarios.py @@ -0,0 +1,56 @@ +# DICCIONARIOS (No se puede repetir el valor) +mi_diccionario = {"c1":"valor1","c2":"valor2"} +print(type(mi_diccionario)) +print(mi_diccionario) + +# Guardando un valor +resultado = mi_diccionario['c1'] +print(resultado) + +# Ejemplo 1 +cliente = { + 'nombre':'Juan', + 'apellido':'Fuentes', + 'peso':'88', + 'talla':'1760' +} +consulta = (cliente['talla']) +print(consulta) + +# Ejemplo 2 +paciente ={ + "nombre":"Eusebio", + "apellido":"García", + "peso":82.6, + "altura":"172" +} +print(f"El paciente se llama {paciente['nombre']} {paciente['apellido']} pesa {paciente['peso']} kg y mide {paciente['altura']} cm.") + +# Diccionarios anidados y listas anidadas +dic = {'c1':55,'c2':[10,20,30],'c3':{'s1':100,'s2':200}} +print(dic['c2']) +print(dic['c2'][1]) +print(dic['c3']) +print(dic['c3']['s2']) + +# Ejercicio sacar la letra e en mayúscula +diccio = {'c1':['a','b','c'],'c2':['d','e','f']} +print(diccio['c2'][1].upper()) + +# Cambios en un diccionario +dic2 = {1:'a',2:'b'} +print(dic2) +dic2[3] = 'c' +print(dic2) +dic2[2] = 'B' +print(dic2) +print(dic2.keys()) +print(dic2.values()) +print(dic2.items()) + +mi_dic = {"nombre":"Karen", "apellido":"Jurgens", "edad":35, "ocupacion":"Periodista"} +mi_dic['edad'] = 36 +mi_dic['ocupacion'] = 'Editora' +mi_dic['pais'] = 'Colombia' + +print(mi_dic) \ No newline at end of file diff --git a/dia_03/08_tuplas.py b/dia_03/08_tuplas.py new file mode 100644 index 0000000..fbd2dc4 --- /dev/null +++ b/dia_03/08_tuplas.py @@ -0,0 +1,33 @@ +mi_tuple = (1,2,3,4) +mi_tuple2 = 1,2,(10,20),4 +print(type(mi_tuple)) +print(mi_tuple2) + +print(mi_tuple[2]) +print(mi_tuple[-2]) + +print(mi_tuple2[2][0]) + +# El tuple se puede convertir en una lista +mi_tuple =list(mi_tuple) +print(type(mi_tuple)) +# También al revés, se puede convertir una lista en un tuple +mi_tuple =tuple(mi_tuple) +print(type(mi_tuple)) + +# Se puede dar cada uno de los valores a una variable distinta +# pero tienen que coincidir la cantidad de valores con las variables +t = 1,2,1 +x,y,z = t +print(x, y, z) + +# Se puede pedir el número de elementos +print(len(t)) + +# Se puede contar la cantidad de apareciones de un valor +print(t.count(1)) + +# También se puede consultar el indice de un valor +print(t.index(2)) + + diff --git a/dia_03/09_set.py b/dia_03/09_set.py new file mode 100644 index 0000000..0ffe3b4 --- /dev/null +++ b/dia_03/09_set.py @@ -0,0 +1,46 @@ +""" Sets """ + +mi_set = set([1, 2, 3, 4, 5]) +print(type(mi_set)) +print(mi_set) + +# No acepta repeticiones +# No acepta listas +# pero sí tuples porque son inmutables +otro_set = set([1, 2, 3, 4, 5, (1,2,3), 1, 1, 1]) +print(otro_set) + +print(len(mi_set)) + +print(2 in mi_set) + +# MÉTODOS + +# Union +s1 = {1,2,3} +s2 = {3,4,5} +s3 = s1.union(s2) +print(s3) + +# Agregar +s1.add(4) +print(s1) + +# Eliminar. Si no encuentra el elemento +# da error +s1.remove(3) +print(s1) + +# Descartar. Funciona como remove +# pero no da error si no encuentra el elemento +s1.discard(3) +print(s1) + +# Elimina un elemento aleatorio +sorteo = s1.pop() +print(sorteo) +print(s1) + +# Vaciar el set +s1.clear() +print(s1) diff --git a/dia_03/10_booleanos.py b/dia_03/10_booleanos.py new file mode 100644 index 0000000..d6df38c --- /dev/null +++ b/dia_03/10_booleanos.py @@ -0,0 +1,23 @@ +""" +booleano +""" + +# Creación directa del booleano +var1 = True +var2 = False +print(type(var1)) +print(var1) + +# Creación indirecta del booleano +numero = 5 > 2+3 +print(type(numero)) +print(numero) + +# Creación explícita +compara = bool(5 != 5+1) +print(compara) + +lista = (1, 2, 3, 4) +control = 5 not in lista +print(type(control)) +print(control) diff --git a/dia_03/11_programa03.py b/dia_03/11_programa03.py new file mode 100644 index 0000000..0bb916f --- /dev/null +++ b/dia_03/11_programa03.py @@ -0,0 +1,31 @@ +""" +Programa día 3 - Analizador de text +""" + +txt = input(""" +Ingresa un texto para analizar +""") + +print("\nIngresa tres letras por favor") +l1 = input("\tIngresa la primera letra: ") +l2 = input("\tIngresa la segunda letra: ") +l3 = input("\tIngresa la tercera letra: ") + +letras = [l1, l2, l3] + +print("\nPRIMERO. Vamos a ver las veces que aparecen las letras en el texto:") +print(f"\t- La letra {l1} se encuentra {txt.lower().count(letras[0].lower())} veces en el texto.") +print(f"\t- La letra {l2} se encuentra {txt.lower().count(letras[1].lower())} veces en el texto.") +print(f"\t- La letra {l3} se encuentra {txt.lower().count(letras[2].lower())} veces en el texto.") + +print(f"\nSEGUNDO. El texto tiene {len(txt.split())} palabras.") + +pos_pri = txt[0] +pos_fin = txt[-1] +print(f"\nTERCERO. La primera letra del texto es \"{pos_pri}\" y la última es \"{pos_fin}\"") + +print(f"\nCUARTO. Cuidao, el texto al revés es así:\n{' '.join(txt[::-1])}") + +ser_o_no_ser = ("python" in txt) +dic_si_o_no = {True:"sí",False:"no"} +print(f"\nQUINTO. La palabra python {dic_si_o_no[ser_o_no_ser]} se encuentra en el texto")