diff --git a/lab-python-error-handling.ipynb b/lab-python-error-handling.ipynb index 3e50ef8..9f493a6 100644 --- a/lab-python-error-handling.ipynb +++ b/lab-python-error-handling.ipynb @@ -46,7 +46,189 @@ "metadata": {}, "outputs": [], "source": [ - "# your code goes here" + "def categorize_members(input):\n", + " try:\n", + " if not all(isinstance(i, list) and len(i) == 2 and isinstance(i[0], int) and isinstance(i[1], int) for i in input):\n", + " raise ValueError(\"Input debe ser una lista de listas, cada una conteniendo dos enteros (edad y discapacidad).\")\n", + " \n", + " return [\"Senior\" if age >= 55 and handicap > 7 else \"Open\" for age, handicap in input]\n", + " except ValueError as e:\n", + " print(f\"Error: {e}\")\n", + " except Exception as e:\n", + " print(f\"Ocurrió un error inesperado: {e}\")\n", + " else:\n", + " print(\"La categorización se realizó correctamente.\")\n", + " finally:\n", + " print(\"Fin de la función categorize_members.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5ddd84f6", + "metadata": {}, + "outputs": [], + "source": [ + "def sum_multiples_of_3_or_5(n):\n", + " try:\n", + " if not isinstance(n, int):\n", + " raise TypeError(\"El argumento debe ser un número entero.\")\n", + " if n < 0:\n", + " return 0\n", + " \n", + " return sum(x for x in range(n) if x % 3 == 0 or x % 5 == 0)\n", + " except TypeError as e:\n", + " print(f\"Error: {e}\")\n", + " except Exception as e:\n", + " print(f\"Ocurrió un error inesperado: {e}\")\n", + " else:\n", + " print(\"La suma de los múltiplos se calculó correctamente.\")\n", + " finally:\n", + " print(\"Fin de la función sum_multiples_of_3_or_5.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "80f657dc", + "metadata": {}, + "outputs": [], + "source": [ + "def digits_of_number(n):\n", + " try:\n", + " if not isinstance(n, int):\n", + " raise TypeError(\"El argumento debe ser un número entero.\")\n", + " \n", + " return [int(digit) for digit in str(n)]\n", + " except TypeError as e:\n", + " print(f\"Error: {e}\")\n", + " except ValueError as e:\n", + " print(f\"Error de valor: {e}\")\n", + " except Exception as e:\n", + " print(f\"Ocurrió un error inesperado: {e}\")\n", + " else:\n", + " print(\"Los dígitos fueron extraídos correctamente.\")\n", + " finally:\n", + " print(\"Fin de la función digits_of_number.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c26b5cf8", + "metadata": {}, + "outputs": [], + "source": [ + "def invert(lst):\n", + " try:\n", + " if not isinstance(lst, list):\n", + " raise TypeError(\"El argumento debe ser una lista de números enteros.\")\n", + " if not all(isinstance(x, int) for x in lst):\n", + " raise ValueError(\"Todos los elementos de la lista deben ser enteros.\")\n", + " \n", + " return [-x for x in lst]\n", + " except TypeError as e:\n", + " print(f\"Error: {e}\")\n", + " except ValueError as e:\n", + " print(f\"Error de valor: {e}\")\n", + " except Exception as e:\n", + " print(f\"Ocurrió un error inesperado: {e}\")\n", + " else:\n", + " print(\"Los signos fueron invertidos correctamente.\")\n", + " finally:\n", + " print(\"Fin de la función invert.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fd1b2580", + "metadata": {}, + "outputs": [], + "source": [ + "def generate_pairs(list1, list2):\n", + " try:\n", + " if not isinstance(list1, list) or not isinstance(list2, list):\n", + " raise TypeError(\"Ambos argumentos deben ser listas.\")\n", + " \n", + " return [(x, y) for x in list1 for y in list2]\n", + " except TypeError as e:\n", + " print(f\"Error: {e}\")\n", + " except Exception as e:\n", + " print(f\"Ocurrió un error inesperado: {e}\")\n", + " else:\n", + " print(\"Los pares fueron generados correctamente.\")\n", + " finally:\n", + " print(\"Fin de la función generate_pairs.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1efb26e8", + "metadata": {}, + "outputs": [], + "source": [ + "def key_value_pairs(d):\n", + " try:\n", + " if not isinstance(d, dict):\n", + " raise TypeError(\"El argumento debe ser un diccionario.\")\n", + " \n", + " return [(key, value) for key, values in d.items() for value in values]\n", + " except TypeError as e:\n", + " print(f\"Error: {e}\")\n", + " except Exception as e:\n", + " print(f\"Ocurrió un error inesperado: {e}\")\n", + " else:\n", + " print(\"Los pares clave-valor fueron generados correctamente.\")\n", + " finally:\n", + " print(\"Fin de la función key_value_pairs.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fc258635", + "metadata": {}, + "outputs": [], + "source": [ + "def generate_all_pairs(tuples):\n", + " try:\n", + " if not all(isinstance(t, tuple) and len(t) == 2 and isinstance(t[0], list) and isinstance(t[1], list) for t in tuples):\n", + " raise TypeError(\"El argumento debe ser una lista de tuplas, cada una conteniendo dos listas.\")\n", + " \n", + " return [(x, y) for (list1, list2) in tuples for x in list1 for y in list2]\n", + " except TypeError as e:\n", + " print(f\"Error: {e}\")\n", + " except Exception as e:\n", + " print(f\"Ocurrió un error inesperado: {e}\")\n", + " else:\n", + " print(\"Los pares fueron generados correctamente.\")\n", + " finally:\n", + " print(\"Fin de la función generate_all_pairs.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1527cd28", + "metadata": {}, + "outputs": [], + "source": [ + "def string_pairs(strings):\n", + " try:\n", + " if not all(isinstance(s, str) for s in strings):\n", + " raise TypeError(\"El argumento debe ser una lista de cadenas.\")\n", + " \n", + " return {(x, y) for s1 in strings for x in s1 for s2 in strings for y in s2}\n", + " except TypeError as e:\n", + " print(f\"Error: {e}\")\n", + " except Exception as e:\n", + " print(f\"Ocurrió un error inesperado: {e}\")\n", + " else:\n", + " print(\"Los pares de caracteres fueron generados correctamente.\")\n", + " finally:\n", + " print(\"Fin de la función string_pairs.\")\n" ] } ],