diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Ramirofordev.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Ramirofordev.py new file mode 100644 index 0000000000..a01cf4957f --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Ramirofordev.py @@ -0,0 +1,23 @@ +# Python: https://www.python.org/ +''' +Esta es la forma de comentar en varias lineas +''' + +# Y esta es la forma de comentar en una sola linea + +x = 5 +PI = 3.1416 + +# Int +y = 6 + +# Float +n = 1.5 + +# String +nombre = "Nacho" + +# Boolean +estudiando = True + +print("Hola, Python!") diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/Ramirofordev.py b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/Ramirofordev.py new file mode 100644 index 0000000000..cdf41355a8 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/Ramirofordev.py @@ -0,0 +1,104 @@ +# Operadores + +# Operadores aritmeticos + +print(f"La suma de 5 + 2 es {5 + 2}") +print(f"La resta de 10 - 10 es {10 - 20}") +print(f"La multiplicacion de 100 * 20 es {100 * 20}") +print(f"La division de 70 / 18 es {70 / 18}") +print(f"El modulo de 5 % 2 es {5 % 2}") +print(f"Dos al cuadrado es {2**2}") +print(f"La division por piso de 5 // 10 es {5 // 10}") + +# Operaciones de comparacion + +print(3 > 2) +print(2 < 3) +print(10 >= 100) +print(56 <= 10) +print("hola" == "hola") +print(2 != 3) + +# Operadores logicos +print(f"AND &&: 10 + 3 == 13 and 5 - 1 == 4 es {10 + 3 == 13 and 5 - 1 == 4}") +print(f"OR ||: 5 * 2 == 10 or 5 / 2 == 1 es {5 * 2 == 10 or 5 / 2 == 1}") +print(f"NOT !: not 10 + 15 == 25 es {not 10 + 15 == 25}") + +# Operaciones de asignacion +a = 5 +print(a) +a += 10 +print(a) +a -= 9 +print(a) +a *= 2 +print(a) +a /= 3 +print(a) +a %= 4 +print(a) +a **= 8 +print(a) +a //= 5 +print(a) + +# Operadores de identidad +new_number = a +print(f"new_number is a es {new_number is a}") +print(f"new_number is a es {new_number is not a}") + +# Operadores de pertenencia +numbers = [1, 2, 3, 4, 5] +print(f"IN: 3 in numbers es {3 in numbers}") +print(f"NOT IN: 3 not in numbers es {3 not in numbers}") + +# Operadores de bit +a = 10 # 1010 +b = 3 # 0011 +print(f"AND: 10 & 3 es {10 & 3}") # 0010 +print(f"OR: 10 | 3 es {10 | 3}") # 1011 +print(f"XOR: 10 ^ 3 es {10 ^ 3}") # 1001 +print(f"NOT: ~10 es {~10}") +print(f"Desplazamiento a la derecha: 10 >> 2 es {10 >> 2}") +print(f"Desplazamiento a la izquierda: 10 << 2 es {10 << 2}") + +# Estructuras de control + +# Condicionales + +age = 18 +if age >= 18: + print("Felicidades eres mayor de edad.") +elif age >= 80: + print("Felicidades entraste a la etapa final de tu vida") +else: + print("Eres menor de edad. Felicidades sigues siendo un chaval.") + +# Iterativas + +for i in range(3): + print("Hola Python!") + +while True: + r = input("Bienvenidos a mi menu: \n" \ + "1. Decir hola." \ + "2. Salir") + if r == 1: + print("Hola") + else: + break + +# Manejo de excepciones + +try: + print(10 / 0) +except: + print("No se puede dividir entre 0") +finally: + print("Gracias por ejecutarme") + +# Ejercicio opcional + +for i in range(10, 56): + if i % 3 != 0 and i != 16 and i % 2 == 0: + print(i) \ No newline at end of file diff --git a/Roadmap/02 - FUNCIONES Y ALCANCE/python/Ramirofordev.py b/Roadmap/02 - FUNCIONES Y ALCANCE/python/Ramirofordev.py new file mode 100644 index 0000000000..2124c48c76 --- /dev/null +++ b/Roadmap/02 - FUNCIONES Y ALCANCE/python/Ramirofordev.py @@ -0,0 +1,84 @@ +# Funciones + +# Funcion sin parametro ni retorno +def hello_python(): + print("Hola a todos, este es mi codigo en Python!") + +hello_python() + +# Funcion con parametros pero sin retorno +def area_circulo(ra, pi): + print(f"El de tu circulo es {pi * ra**2}") + +area_circulo(2, 3.1416) + +# Funcion con parametros y retorno +def say_hello_to_user(user, times): + n = 0 + for i in range(times): + print(f"Hello {user}!") + n += 1 + + return n + +count = say_hello_to_user("nacho", 8) +print(f"Se le dijo hola al usuario {count}") + +# Funciones dentro de funciones + +def show_pair_numbers(): + def get_pair_numbers(): + numbers = [1, 2, 3, 4, 5, 6] + pair_numbers = [] + for i in numbers: + if i % 2 == 0: + pair_numbers.append(i) + + return pair_numbers + + pair_numbers = get_pair_numbers() + print(pair_numbers) + +show_pair_numbers() + +# Funciones ya creadas por python +print(sum(5 + 2)) + +# Variables locales y globales + +global pi + +def pi_plus_everything(): + pi = 3.1416 + print(pi) + ultimo_resultado = 0 + for i in range(100): + print(f"Pi * {i} es = {pi * i}") + ultimo_resultado = {pi * i} + print(ultimo_resultado) + +# print(ultima_operacion) dara error porque solo se puede usar en el scope de la funcion mientras que pi se puede usar en cualquier parte del codigo + +pi = "pi" + +print(pi) + +# Ejercicio opcional + +def opc_exercise(text1, text2): + # La funcion imprime todos los numeros del 1 al 100 + counts_numbers = 0 + for i in range(100): + if i % 3 == 0: + print(text1) + elif i % 5 == 0: + print(text2) + elif i % 3 == 0 and i % 5 == 0: + print(text1 , " " , text2) + else: + print(i) + counts_numbers += 1 + return counts_numbers + +cantidad = opc_exercise("Pablo", "queso") +print(cantidad) \ No newline at end of file diff --git a/Roadmap/03 - ESTRUCTURAS DE DATOS/python/Ramirofordev.py b/Roadmap/03 - ESTRUCTURAS DE DATOS/python/Ramirofordev.py new file mode 100644 index 0000000000..41e6cb28bc --- /dev/null +++ b/Roadmap/03 - ESTRUCTURAS DE DATOS/python/Ramirofordev.py @@ -0,0 +1,121 @@ +# Estructuras de datos + +# Listas +numbers = [1, 2, 3, 4, 5] +print(numbers) +numbers.append(8) # Insercion +numbers.remove(1) # Eliminacion +print(numbers) +print(numbers[1]) # Acceso +numbers.insert(3, 6) # Actualizacion +numbers[3] = 7 # Actualizacion +print(numbers) + +# Tuple +my_tuple = ("Nacho", "Ramiro", "kuro", "jose@gmail") +print(my_tuple[1]) # acceso +my_tuple = tuple(sorted(my_tuple)) # ordenacion +print(my_tuple) + +# Sets +my_set = {"pollo", "gato", "perro", "vaca"} +my_set.add("ganso") # Insercion +my_set.discard("vaca") # Eliminacion +my_set.pop() # Eliminacion +my_set = set(sorted(my_set)) +print(my_set) + +# Diccionarios +my_dict = { + 'name': "Nacho", + 'age': 18, + 'job': 'assistant', + 'year': 2006 +} +my_dict.pop('job') # Eliminacion +my_dict.popitem() # Eliminacion +print(my_dict) +print(my_dict["age"]) # Acceso +my_dict["age"] = 20 # Insercion + +# Ejercicio opcional + +contactos = {} + +print(contactos) + +def buscar(): + dato = input("Por favor inserta el nombre del contacto: ").title() + if dato in contactos: + print("Contacto encontrado aqui tienes sus datos: \n" \ + f"Nombre: {dato}" \ + f"Numero: {contactos[dato]}") + +def insertar(): + nombre = input("Por favor ingrese el nombre del contacto: ").title() + while True: + numero = input("Porfavor ingrese el numero: ").strip() + if numero.isalnum() and len(numero) <= 11: + contactos[nombre] = numero + break + else: + print("Numero invalido porfavor intentelo de nuevo") + pass + +def actualizar(): + r = input("Que dato desea actualizar: \n" \ + "1. Nombre.\n" \ + "2. Numero.") + if r == "1": + old_name = input("Dame el nombre del contacto que deseas cambiar: ").title() + new_name = input("Dame el nuevo nombre: ").title() + if old_name in contactos: + contactos[new_name] = contactos.pop(old_name) + else: + print("Contacto no encontrado") + elif r == "2": + name = input("Dame el nombre del contacto: ").title() + new_number = input("Dame el nuevo numero: ").replace(" ", "") + if name or new_name in contactos: + if new_number.isalnum() and len(new_number) <= 11: + contactos[name] = new_number + else: + print("Numero invalido") + else: + print("Contacto no encontrado") + else: + print("Opcion invalida") + +def borrar(): + contacto = input("Que contacto deseas eliminar, introduce su nombre por favor: ").title() + if contacto in contactos: + del contactos[contacto] + else: + print("No se encontro ese contacto") + +def opciones(respuesta): + funciones = { + "1": buscar, + "2": insertar, + "3": actualizar, + "4": borrar + } + return funciones[respuesta]() # llamara a la funcion usando la respuesta como su llave + +while True: + r = input("Bienvenido a la agenda de contactos\n" \ + "Elige una de las siguientes opciones: \n" \ + "1. Buscar un contacto\n" \ + "2. Insertar un nuevo contacto. \n" \ + "3. Actualizar un contacto. \n" \ + "4. Eliminar un contacto. \n" \ + "5. Salir del menu.\n") + + if r in ["1", "2", "3", "4"]: + opciones(r) + elif r == "5": + print("Gracias por usar la agenda") + break + else: + print("Opcion no valida porfavor vuelva a intentar.") + pass diff --git a/Roadmap/04 - CADENAS DE CARACTERES/python/Ramirofordev.py b/Roadmap/04 - CADENAS DE CARACTERES/python/Ramirofordev.py new file mode 100644 index 0000000000..76e8a1d9ec --- /dev/null +++ b/Roadmap/04 - CADENAS DE CARACTERES/python/Ramirofordev.py @@ -0,0 +1,112 @@ +# Cadenas de caracteres + +string = "Hola Python" +string2 = "Como estan?" + +# Concatenacion +print(string + ", " + string2) + +# Repeticion +print(string * 3) + +# Acceso a caracteres especificos +print(string[2]) + +# Slicing +print(string[:5]) + +# Longitud +print(len(string2)) + +# Busqueda +print('a' in string) +print('h' in string2) + +# Conversion a mayusculas, minusculas y primera letra en mayusculas +print(string.upper()) +print(string.lower()) +print(string2.title()) +print("me llamo nacho".capitalize()) + +# Remplazo +print(string.replace("a", "5")) + +# Division +print(string2.split("o")) + +# Eliminacion de espacios al principio y al final +print(" hola mi nombre es nacho ".strip()) + +# Encontrar +print(string.find("P")) + +# Busqueda al principio y al final +print(string.startswith("h")) +print(string.endswith("n")) + + +# Busqueda de ocurrencias +print(string.count("o")) + +# Formateo +print("AAAA {} texto sin sentido. {}".format(string, string2)) + +# Interpolacion +print(f"Viva molotov, {string2}") + +# Transformacion en lista de caracteres +caracters = list(string) + +# Transformaciones numericas +s1 = "12131341" +s1 = int(s1) + +s2 = "1.5" +s2 = float(s2) + +# Transformacion de lista en cadena +lista = ["Hola", "Python", "Weyes"] +print(" ".join(lista)) + +# Comprobaciones +print(string.isalnum()) +print(string.isalpha()) +print(string.isascii()) +print(string.isdecimal()) +print(string.isdigit()) +print(string.islower()) +# Etc.. + +# Ejercicio extra + +def check(word1: str, word2: str): + + # Palindromos + print(f"{word1} es un palindromo?: {word1 == word1[::-1]}") + print(f"{word2} es un palindromo?: {word2 == word2[::-1]}") + + # Anagramas + print(f"{word1} es un anagrama de {word2}: {sorted(word1) == sorted(word2)}") + + # Isograma + def isogram(word: str) -> bool: + + word_dict = {} + for character in word: + word_dict[character] = word_dict.get(character, 0) + 1 + + isograma = True + values = list(word_dict.values()) + isagram_len = values[0] + for word_count in values: + if word_count != isagram_len: + isograma = False + break + return isograma + + print(f"{word2} es un isograma? {isogram(word2)}") + print(f"{word2} es un isograma? {isogram(word2)}") + + +check("radar", "Python") +check("amor", "roma") \ No newline at end of file