diff --git a/exercises/exercise1.py b/exercises/exercise1.py index c9c0e74..7c6879b 100644 --- a/exercises/exercise1.py +++ b/exercises/exercise1.py @@ -2,6 +2,7 @@ def maximo_basico(a: float, b: float) -> float: + """Toma dos números y devuelve el mayor. Restricciones: @@ -9,7 +10,11 @@ def maximo_basico(a: float, b: float) -> float: - No utilizar ELSE - No utilizar la función max """ - + if (a>b): + print("te paso el a") + return a + print("te paso el b") + return b # NO MODIFICAR - INICIO assert maximo_basico(10, 5) == 10 @@ -25,6 +30,8 @@ def maximo_libreria(a: float, b: float) -> float: Referencia: https://docs.python.org/3/library/functions.html#max """ + maximo_libreria=max(a, b) + return maximo_libreria # NO MODIFICAR - INICIO assert maximo_libreria(10, 5) == 10 @@ -39,8 +46,8 @@ def maximo_ternario(a: float, b: float) -> float: """Re-escribir utilizando el operador ternario. Referencia: https://docs.python.org/3/reference/expressions.html#conditional-expressions # noqa: E501 """ - - + maximo_ternario=max(a, b) + return maximo_ternario # NO MODIFICAR - INICIO assert maximo_ternario(10, 5) == 10 assert maximo_ternario(9, 18) == 18 diff --git a/exercises/exercise2.py b/exercises/exercise2.py index 1f4e7f6..4108343 100644 --- a/exercises/exercise2.py +++ b/exercises/exercise2.py @@ -13,7 +13,12 @@ def maximo_encadenado(a: float, b: float, c: float) -> float: Referencia: https://docs.python.org/3/reference/expressions.html#comparisons # noqa: E501 """ - + if a < c > b: + return c + if c < a > b: + return a + return b + # NO MODIFICAR - INICIO assert maximo_encadenado(1, 10, 5) == 10 @@ -38,7 +43,9 @@ def maximo_cuadruple(a: float, b: float, c: float, d: float) -> float: Referencia: https://docs.python.org/3/library/functions.html#max""" - + maximo_cuadruple=max(a,b,c,d) + print(maximo_cuadruple) + return maximo_cuadruple # NO MODIFICAR - INICIO assert maximo_cuadruple(1, 10, 5, -5) == 10 assert maximo_cuadruple(4, 9, 18, 6) == 18 @@ -54,7 +61,8 @@ def maximo_arbitrario(*args) -> float: """Re-escribir para que tome una cantidad arbitraria de parámetros. Referencia: https://docs.python.org/3/tutorial/controlflow.html#arbitrary-argument-lists # noqa: E501 """ - + + return max(*args) # NO MODIFICAR - INICIO assert maximo_arbitrario(1, 10, 5, -5) == 10 diff --git a/exercises/exercise3.py b/exercises/exercise3.py index 68339cd..7ea9ac6 100644 --- a/exercises/exercise3.py +++ b/exercises/exercise3.py @@ -8,14 +8,19 @@ def operacion_basica(a: float, b: float, multiplicar: bool) -> Union[float, str] - Si multiplicar es True: devuelve la multiplicación entre a y b. - Si multiplicar es False: devuelve la division entre a y b. - Si multiplicar es False y b es cero: devuelve "Operación no válida". - Restricciones: - Utilizar un único return. - Utilizar IF con ELIF con ELSE. - No utilizar AND ni OR. """ - - + var=0 + if multiplicar == True: + var=a*b + elif b==0: + var="Operación no válida" + else: + var=a/b + return var # NO MODIFICAR - INICIO assert operacion_basica(1, 1, True) == 1 assert operacion_basica(1, 1, False) == 1 @@ -40,6 +45,13 @@ def operacion_multiple(a: float, b: float, multiplicar: bool) -> Union[float, st - No utilizar ELIF ni ELSE. - No utilizar AND ni OR. """ + if multiplicar == True: + return a*b + elif b==0: + return "Operación no válida" + else: + return a/b + # NO MODIFICAR - INICIO diff --git a/exercises/exercise4.py b/exercises/exercise4.py index 4a33f8b..3917e14 100644 --- a/exercises/exercise4.py +++ b/exercises/exercise4.py @@ -13,7 +13,18 @@ def es_vocal_if(letra: str) -> bool: Referencia: https://docs.python.org/3/library/stdtypes.html#string-methods """ - + letra = letra.lower() + if(letra == 'a'): + return True + elif (letra == 'e'): + return True + elif (letra == 'i'): + return True + elif (letra == 'o'): + return True + elif (letra == 'u'): + return True + return False # NO MODIFICAR - INICIO assert es_vocal_if("a") @@ -39,7 +50,11 @@ def es_vocal_if_in(letra: str) -> bool: Referencia: https://docs.python.org/3/reference/expressions.html#membership-test-operations # noqa: E501 """ - + letra = letra.lower() + voc = "aeiou" + if (letra in voc): + return True + return False # NO MODIFICAR - INICIO assert es_vocal_if_in("a") @@ -60,7 +75,13 @@ def es_vocal_in(letra: str) -> bool: - No utilizar FOR. - No utilizar listas. """ - + es_vocal_in = False + letra = letra.lower() + voc = "aeiou" + while letra in voc: + es_vocal_in = True + break; + return es_vocal_in # NO MODIFICAR - INICIO assert es_vocal_in("a") diff --git a/exercises/exercise5.py b/exercises/exercise5.py index 1207cbb..ea3a794 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -6,8 +6,10 @@ def sumatoria_basico(n: int) -> int: Restricción: Utilizar un bucle FOR. """ - - + suma = 0 + for i in range(n+1): + suma += i + return suma # NO MODIFICAR - INICIO assert sumatoria_basico(1) == 1 assert sumatoria_basico(100) == 5050 @@ -23,7 +25,8 @@ def sumatoria_sum(n: int) -> int: Restricción: No utilizar bucles (FOR, WHILE, etc) Referencia: https://docs.python.org/3/library/functions.html#sum """ - + + return sum(range(1, n+1)) # NO MODIFICAR - INICIO assert sumatoria_sum(1) == 1 @@ -47,7 +50,12 @@ def multiplicar_basico(numeros: Iterable[float]) -> float: - Utilizar múltiples Return - No utilizar ELSE """ - + multip= 1 + if numeros ==[]: + return 0 + for n in numeros: + multip*=n + return multip # NO MODIFICAR - INICIO assert multiplicar_basico([1, 2, 3, 4]) == 24 diff --git a/exercises/exercise6.py b/exercises/exercise6.py index cc6c8e0..85d824f 100644 --- a/exercises/exercise6.py +++ b/exercises/exercise6.py @@ -12,7 +12,16 @@ def numeros_al_final_basico(lista: List[Union[float, str]]) -> List[Union[float, - Utilizar la función type. - No utilizar índices. """ - + listaNums = [] + listaLetras = [] + for i in lista: + if type(i) == str: + listaLetras.append(i) + else: + listaNums.append(i) + lista = listaLetras + listaNums + return lista + print(lista) # NO MODIFICAR - INICIO assert numeros_al_final_basico([3, "a", 1, "b", 10, "j"]) == ["a", "b", "j", 3, 1, 10] # noqa: E501 @@ -29,7 +38,12 @@ def numeros_al_final_comprension(lista: List[Union[float, str]]) -> List[Union[f - No utilizar bucles. - Utilizar dos comprensiones de listas. """ - + listaNums = [] + listaLetras = [] + listaNums = [i for i in lista if type(i) == int] + listaLetras = [i for i in lista if type(i) == str] + lista = listaLetras + listaNums + return lista # NO MODIFICAR - INICIO assert numeros_al_final_comprension([3, "a", 1, "b", 10, "j"]) == ["a", "b", "j", 3, 1, 10] # noqa: E501 diff --git a/exercises/exercise7.py b/exercises/exercise7.py index 00534bc..ef7281b 100644 --- a/exercises/exercise7.py +++ b/exercises/exercise7.py @@ -11,7 +11,11 @@ def superposicion_basico(lista_1: Iterable[Any], lista_2: Iterable[Any]) -> bool - Utilizar dos bucles FOR anidados. - Utilizar dos returns. """ - + for n in lista_1: + for i in lista_2: + if n == i: + return True + return False # NO MODIFICAR - INICIO test_list = [1, "hello", 35.20] @@ -30,8 +34,10 @@ def superposicion_in(lista_1: Iterable[Any], lista_2: Iterable[Any]) -> bool: - Utilizar un único bucle FOR. - Utilizar dos returns. """ - - + for i in lista_1: + if i in lista_2: + return True + return False # NO MODIFICAR - INICIO test_list = [1, "hello", 35.20] assert superposicion_in(test_list, (2, "world", 35.20)) @@ -52,8 +58,7 @@ def superposicion_any(lista_1: Iterable[Any], lista_2: Iterable[Any]) -> bool: Referencia: https://docs.python.org/3/library/functions.html#any """ - - + return any ( i in lista_1 for i in lista_2) # NO MODIFICAR - INICIO test_list = [1, "hello", 35.20] assert superposicion_any(test_list, (2, "world", 35.20)) @@ -73,7 +78,9 @@ def superposicion_set(lista_1: Iterable[Any], lista_2: Iterable[Any]) -> bool: Referencia: https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset # noqa: E501 """ - + a = set(lista_1) + b = set(lista_2) + return bool (a.intersection(b)) # NO MODIFICAR - INICIO test_list = [1, "hello", 35.20] diff --git a/exercises/exercise8.py b/exercises/exercise8.py index ceea14b..4646673 100644 --- a/exercises/exercise8.py +++ b/exercises/exercise8.py @@ -22,7 +22,10 @@ def combinar_basico(nombres: List[str], precios: List[float]) -> Tuple[Any]: - Utilizar la función range. - Utilizar índices. """ - + lista = [] + for i in range(3): + lista.append((nombres[i], precios[i])) + return tuple(lista) # NO MODIFICAR - INICIO respuesta = ( @@ -51,8 +54,10 @@ def combinar_enumerate(nombres: List[str], precios: List[float], ids: List[int]) Referencia: https://docs.python.org/3/library/functions.html#enumerate """ - - + lista=[] + for indice,nombre in enumerate(nombres): + lista.append((nombre, precios[indice], ids[indice])) + return tuple(lista) # NO MODIFICAR - INICIO respuesta = ( ("ventana", 100.48, 6852), @@ -80,8 +85,12 @@ def combinar_zip(nombres: List[str], precios: List[float], ids: List[int]) -> Tu - No utilizar índices. Referencia: https://docs.python.org/3/library/functions.html#zip """ - - + lista = [] + for n in zip(nombres, precios, ids): + lista_1 = [nombres, precios, ids] + lista.append(tuple(lista_1)) + print(lista_1) + return tuple(lista) # NO MODIFICAR - INICIO respuesta = ( ("ventana", 100.48, 6852), @@ -112,8 +121,10 @@ def combinar_zip_args(*args) -> Tuple[Any]: Referencia: https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists # noqa: E501 """ - - + lista = [] + for arg in zip(*args): + lista.append(arg) + return tuple(lista) # NO MODIFICAR - INICIO respuesta = ( ("ventana", 100.48, 6852, "hogar", True), diff --git a/exercises/exercise9.py b/exercises/exercise9.py index fcfaccb..e4e9dbe 100644 --- a/exercises/exercise9.py +++ b/exercises/exercise9.py @@ -15,6 +15,15 @@ def suma_cubo_pares_for(numeros: Iterable[int]) -> int: - https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions # noqa: E501 - https://docs.python.org/3/library/functions.html#sum """ + list=[] + for n in numeros: + list.append(pow(n, 3)) + sumacubos=0 + for n in list: + if n %2 == 0: + sumacubos += n + print(sumacubos) + return sumacubos # NO MODIFICAR - INICIO @@ -33,7 +42,7 @@ def suma_cubo_pares_sum_list(numeros: Iterable[int]) -> int: - https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions # noqa: E501 - https://docs.python.org/3/library/functions.html#sum """ - + return sum((pow(i,3)) for i in numeros if i % 2 == 0) # NO MODIFICAR - INICIO assert suma_cubo_pares_sum_list([1, 2, 3, 4, 5, 6]) == 288 @@ -53,7 +62,7 @@ def suma_cubo_pares_sum_list(numeros: Iterable[int]) -> int: """ numeros_al_cubo = # Completar - +numeros_al_cubo = list(map(lambda i: i ** 3, numeros)) """ Escribir una función lambda que permita filtrar todos los elementos pares @@ -61,6 +70,7 @@ def suma_cubo_pares_sum_list(numeros: Iterable[int]) -> int: """ numeros_al_cubo_pares = # Completar +list(filter(lambda i: i % 2 == 0, numeros_al_cubo)) """ @@ -72,7 +82,7 @@ def suma_cubo_pares_sum_list(numeros: Iterable[int]) -> int: from functools import reduce # noqa: E402 suma_numeros_al_cubo_pares = # Completar - +suma_numeros_al_cubo_pares = reduce(lambda i, x: i + x, numeros_al_cubo_pares) # NO MODIFICAR - INICIO assert numeros_al_cubo == [1, 8, 27, 64, 125, 216] diff --git a/exercises/exerciseX.py b/exercises/exerciseX.py deleted file mode 100644 index 993e064..0000000 --- a/exercises/exerciseX.py +++ /dev/null @@ -1,63 +0,0 @@ -from typing import List, Union - -############################################################################### - - -def maximo_recursivo(*args) -> float: - """Toma una cantidad arbitraria de números y devuelve el mayor. - - Restricciónes: - - No utilizar la función max - - No utilizar la ninguna otra función salvo maximo_recursivo - - Resolver de manera recursiva - """ - - -# NO MODIFICAR - INICIO -if __name__ == "__main__": - assert maximo_recursivo(1, 10, 5, -5) == 10 - assert maximo_recursivo(4, 9, 18, 6) == 18 - assert maximo_recursivo(24, 9, 18, 20) == 24 - assert maximo_recursivo(24, 9, 18, 30) == 30 -# NO MODIFICAR - FIN - - -############################################################################### - - -from functools import reduce # noqa: E402 - - -def sumatoria_reduce(n: int) -> int: - """Devuelve la suma de los números de 1 a N. - - Restricción: Utilizar la función reduce. - Referencia: https://docs.python.org/3/library/functools.html#functools.reduce # noqa: E501 - """ - - -# NO MODIFICAR - INICIO -if __name__ == "__main__": - assert sumatoria_reduce(1) == 1 - assert sumatoria_reduce(100) == 5050 -# NO MODIFICAR - FIN - - -############################################################################### - - -def numeros_al_final_sorted(lista: List[Union[float, str]]) -> List[Union[float, str]]: # noqa: E501 - """Re-escribir utilizando la función sorted con una custom key. - - Restricciones: - - No utilizar bucles. - - No utilizar comprensiones. - - Utilizar un lambda. - - Referencia: https://docs.python.org/3/library/functions.html#sorted - """ - - -# NO MODIFICAR - INICIO -assert numeros_al_final_sorted([3, "a", 1, "b", 10, "j"]) == ["a", "b", "j", 3, 1, 10] # noqa: E501 -# NO MODIFICAR - FIN diff --git a/exercises/tempCodeRunnerFile.py b/exercises/tempCodeRunnerFile.py new file mode 100644 index 0000000..24ab325 --- /dev/null +++ b/exercises/tempCodeRunnerFile.py @@ -0,0 +1,35 @@ +assert combinar_enumerate(nombre_articulos, precio_articulos, id_articulos) == respuesta # noqa: E501 +# NO MODIFICAR - FIN + + +############################################################################### + + +id_articulos = [6852, 1459, 3578] + + +def combinar_zip(nombres: List[str], precios: List[float], ids: List[int]) -> Tuple[Any]: # noqa: E501 + """Re-Escribir utilizando zip. + + Restricción: + - Utilizar un bucle FOR. + - No utilizar la función range. + - No utilizar la función enumerate. + - No utilizar índices. + Referencia: https://docs.python.org/3/library/functions.html#zip + """ + lista = [] + for n in zip(nombres, precios, ids): + lista_1 = [nombres, precios, ids] + lista.append(tuple(lista_1)) + print(lista_1) + return tuple(lista) +# NO MODIFICAR - INICIO +respuesta = ( + ("ventana", 100.48, 6852), + ("lámpara", 16.42, 1459), + ("shampoo", 5.2, 3578), +) + +assert combinar_zip(nombre_articulos, precio_articulos, id_articulos) == respuesta # noqa: E501 +# NO MODIFICAR - FIN \ No newline at end of file