From a6fa0c86f2f91952bfc3763fd2698c0a33a1668b Mon Sep 17 00:00:00 2001 From: LeonelZarini Date: Wed, 14 Sep 2022 20:42:44 -0300 Subject: [PATCH] Practica 2 --- exercises/exercise1.py | 15 +++++++++------ exercises/exercise2.py | 12 ++++++++++++ exercises/exercise3.py | 22 +++++++++++++++++++--- exercises/exercise4.py | 13 ++++++++++++- exercises/exercise5.py | 14 ++++++++++++++ exercises/exercise7.py | 4 ++-- exercises/exercise8.py | 5 ++++- exercises/exercise9.py | 19 +++++++++++++++---- 8 files changed, 87 insertions(+), 17 deletions(-) diff --git a/exercises/exercise1.py b/exercises/exercise1.py index c9c0e74..d4e3adc 100644 --- a/exercises/exercise1.py +++ b/exercises/exercise1.py @@ -2,15 +2,17 @@ def maximo_basico(a: float, b: float) -> float: + if a>b: + return a + if b>a: + return b + """Toma dos números y devuelve el mayor. - Restricciones: - Utilizar IF - No utilizar ELSE - No utilizar la función max """ - - # NO MODIFICAR - INICIO assert maximo_basico(10, 5) == 10 assert maximo_basico(9, 18) == 18 @@ -24,8 +26,8 @@ def maximo_libreria(a: float, b: float) -> float: """Re-escribir utilizando el built-in max. 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 assert maximo_libreria(9, 18) == 18 @@ -36,11 +38,12 @@ def maximo_libreria(a: float, b: float) -> float: def maximo_ternario(a: float, b: float) -> float: + maximo_ternario= a if a>b else b; + return maximo_ternario """Re-escribir utilizando el operador ternario. Referencia: https://docs.python.org/3/reference/expressions.html#conditional-expressions # noqa: E501 """ - # 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..e6fc079 100644 --- a/exercises/exercise2.py +++ b/exercises/exercise2.py @@ -2,7 +2,15 @@ """ +from ast import arg + + def maximo_encadenado(a: float, b: float, c: float) -> float: + if c < b > a: + return b + if a < c > b: + return c + return a """Toma 3 números y devuelve el máximo. Restricciones: @@ -37,6 +45,8 @@ def maximo_cuadruple(a: float, b: float, c: float, d: float) -> float: """Re-escribir para que tome 4 parámetros, utilizar la función max. Referencia: https://docs.python.org/3/library/functions.html#max""" + maximo_cuadruple=max(a, b, c, d) + return maximo_cuadruple # NO MODIFICAR - INICIO @@ -55,6 +65,8 @@ def maximo_arbitrario(*args) -> float: Referencia: https://docs.python.org/3/tutorial/controlflow.html#arbitrary-argument-lists # noqa: E501 """ + + # NO MODIFICAR - INICIO assert maximo_arbitrario(1, 10, 5, -5) == 10 diff --git a/exercises/exercise3.py b/exercises/exercise3.py index 68339cd..fba9e25 100644 --- a/exercises/exercise3.py +++ b/exercises/exercise3.py @@ -1,8 +1,7 @@ """Único return vs múltiples return.""" +from operator import truediv from typing import Union - - def operacion_basica(a: float, b: float, multiplicar: bool) -> Union[float, str]: # noqa: E501 """Toma dos números (a, b) y un booleano (multiplicar): - Si multiplicar es True: devuelve la multiplicación entre a y b. @@ -14,7 +13,13 @@ def operacion_basica(a: float, b: float, multiplicar: bool) -> Union[float, str] - Utilizar IF con ELIF con ELSE. - No utilizar AND ni OR. """ - + if multiplicar==True: + resultado = a*b + elif b==0: + resultado = "Operación no válida" + else: + resultado = a/b + return resultado # NO MODIFICAR - INICIO assert operacion_basica(1, 1, True) == 1 @@ -39,7 +44,18 @@ def operacion_multiple(a: float, b: float, multiplicar: bool) -> Union[float, st - No Utilizar IF anidados. - No utilizar ELIF ni ELSE. - No utilizar AND ni OR. + - 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". """ + if multiplicar==True: + return a*b + if multiplicar==False: + try: + return a/b + except ZeroDivisionError: + return "Operación no válida" + # NO MODIFICAR - INICIO diff --git a/exercises/exercise4.py b/exercises/exercise4.py index 4a33f8b..63dac5d 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 + if letra == "e": + return True + if letra == "i": + return True + if letra == "o": + return True + if letra == "u": + return True + return False # NO MODIFICAR - INICIO assert es_vocal_if("a") diff --git a/exercises/exercise5.py b/exercises/exercise5.py index 1207cbb..6bfbe03 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -6,6 +6,10 @@ def sumatoria_basico(n: int) -> int: Restricción: Utilizar un bucle FOR. """ + suma=0 + for i in range(n+1): + suma = suma+i + return suma # NO MODIFICAR - INICIO @@ -23,6 +27,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 """ + lista=list(range(1,n+1)) + return sum(lista) # NO MODIFICAR - INICIO @@ -47,6 +53,14 @@ def multiplicar_basico(numeros: Iterable[float]) -> float: - Utilizar múltiples Return - No utilizar ELSE """ + producto=1 + lista=list(numeros) + if lista==[]: + return 0 + if lista != []: + for i in lista: + producto = i*producto + return producto # NO MODIFICAR - INICIO diff --git a/exercises/exercise7.py b/exercises/exercise7.py index 00534bc..681c954 100644 --- a/exercises/exercise7.py +++ b/exercises/exercise7.py @@ -52,6 +52,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(check in lista_2 for check in lista_1) # NO MODIFICAR - INICIO @@ -73,8 +74,7 @@ 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 """ - - + return set(lista_2) & set(lista_1) # NO MODIFICAR - INICIO test_list = [1, "hello", 35.20] assert superposicion_set(test_list, (2, "world", 35.20)) diff --git a/exercises/exercise8.py b/exercises/exercise8.py index ceea14b..de8b64b 100644 --- a/exercises/exercise8.py +++ b/exercises/exercise8.py @@ -80,7 +80,8 @@ 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 """ - + respuesta = tuple(zip(nombre_articulos, precio_articulos, id_articulos)) + return respuesta # NO MODIFICAR - INICIO respuesta = ( @@ -112,6 +113,8 @@ def combinar_zip_args(*args) -> Tuple[Any]: Referencia: https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists # noqa: E501 """ + respuesta = tuple(zip(nombre_articulos, precio_articulos, id_articulos, categoria_articulos, importado_articulos)) + return respuesta # NO MODIFICAR - INICIO diff --git a/exercises/exercise9.py b/exercises/exercise9.py index fcfaccb..a4bbecf 100644 --- a/exercises/exercise9.py +++ b/exercises/exercise9.py @@ -15,6 +15,17 @@ 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 """ + cubos=[] + for x in numeros: + y= x**3 + cubos.append(y) + + suma=0 + for y in cubos: + if (y % 2 == 0): + suma = suma+y + + return suma # NO MODIFICAR - INICIO @@ -33,7 +44,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(x**3 for x in numeros if (x**3)%2 == 0) # NO MODIFICAR - INICIO assert suma_cubo_pares_sum_list([1, 2, 3, 4, 5, 6]) == 288 @@ -52,7 +63,7 @@ def suma_cubo_pares_sum_list(numeros: Iterable[int]) -> int: Restricción: Utilizar List, map y lambda y la variable numeros """ -numeros_al_cubo = # Completar +numeros_al_cubo =list(map(lambda x: x**3, numeros)) """ Escribir una función lambda que permita filtrar todos los elementos pares @@ -60,7 +71,7 @@ def suma_cubo_pares_sum_list(numeros: Iterable[int]) -> int: Restricción: Utilizar List, filter, lambda y la variable numeros_al_cubo """ -numeros_al_cubo_pares = # Completar +numeros_al_cubo_pares =list(filter(lambda x: x%2==0, numeros_al_cubo)) """ @@ -71,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 x,y: x+y, numeros_al_cubo_pares) # NO MODIFICAR - INICIO