informatica:programacion:python:cursos:introduccion_programacion_python:ejemplos_practicos
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| informatica:programacion:python:cursos:introduccion_programacion_python:ejemplos_practicos [2023/04/27 11:16] – [Conversión a números romanos] tempwin | informatica:programacion:python:cursos:introduccion_programacion_python:ejemplos_practicos [2023/04/28 11:47] (actual) – [JSON en Python] tempwin | ||
|---|---|---|---|
| Línea 575: | Línea 575: | ||
| def test_19(self): | def test_19(self): | ||
| self.assertEqual(roman(19), | self.assertEqual(roman(19), | ||
| + | | ||
| + | def test_20(self): | ||
| + | self.assertEqual(roman(20), | ||
| + | | ||
| + | def test_27(self): | ||
| + | self.assertEqual(roman(27), | ||
| + | def test_33(self): | ||
| + | self.assertEqual(roman(33), | ||
| + | | ||
| + | def test_40(self): | ||
| + | self.assertEqual(roman(40), | ||
| + | |||
| + | def test_49(self): | ||
| + | self.assertEqual(roman(49), | ||
| + | |||
| + | def test_50(self): | ||
| + | self.assertEqual(roman(50), | ||
| + | |||
| + | def test_62(self): | ||
| + | self.assertEqual(roman(62), | ||
| + | | ||
| + | def test_90(self): | ||
| + | self.assertEqual(roman(90), | ||
| + | | ||
| + | def test_97(self): | ||
| + | self.assertEqual(roman(90), | ||
| + | | ||
| + | def test_100(self): | ||
| + | self.assertEqual(roman(100), | ||
| + | |||
| + | def test_333(self): | ||
| + | self.assertEqual(roman(333), | ||
| + | | ||
| + | def test_400(self): | ||
| + | self.assertEqual(roman(400), | ||
| + | | ||
| + | def test_500(self): | ||
| + | self.assertEqual(roman(500), | ||
| + | | ||
| + | def test_666(self): | ||
| + | self.assertEqual(roman(666), | ||
| + | | ||
| + | def test_900(self): | ||
| + | self.assertEqual(roman(900), | ||
| + | | ||
| + | def test_1000(self): | ||
| + | self.assertEqual(roman(1000), | ||
| + | | ||
| + | def test_1666(self): | ||
| + | self.assertEqual(roman(1666), | ||
| + | | ||
| + | def test_3999(self): | ||
| + | self.assertEqual(roman(3999), | ||
| if __name__ == ' | if __name__ == ' | ||
| Línea 597: | Línea 650: | ||
| def roman(n: int) -> str: | def roman(n: int) -> str: | ||
| + | |||
| + | cantidades = [ | ||
| + | (1000, " | ||
| + | (90, " | ||
| + | (5, " | ||
| + | ] | ||
| conv = "" | conv = "" | ||
| + | | ||
| + | for cant, letras in cantidades: | ||
| + | while n >= cant. | ||
| + | n -= cant | ||
| + | conv += letras | ||
| + | | ||
| + | return conv | ||
| + | </ | ||
| - | if n >= 10: | + | Opción con recursividad: |
| - | n -= 10 | + | |
| - | conv += " | + | |
| - | if n == 9: | + | <code python> |
| - | n -= 9 | + | def roman2(n: int) -> str: |
| - | conv += " | + | |
| - | if n >= 5: | + | if n >= 1000: |
| - | n -= 5 | + | |
| - | | + | elif n >= 900: |
| + | | ||
| + | elif n >= 500: | ||
| + | return " | ||
| + | elif n >= 400: | ||
| + | return " | ||
| + | elif n >= 100: | ||
| + | return " | ||
| + | elif n >= 90: | ||
| + | return " | ||
| + | elif n >= 50: | ||
| + | return " | ||
| + | elif n >= 40: | ||
| + | return " | ||
| + | elif n >= 10: | ||
| + | return " | ||
| + | elif n >= 9: | ||
| + | return " | ||
| + | elif n >= 5: | ||
| + | return | ||
| + | elif n >= 4: | ||
| + | return " | ||
| + | elif n >= 1: | ||
| + | return " | ||
| + | else: | ||
| + | return "" | ||
| + | </ | ||
| - | if n == 4: | + | * [[https:// |
| - | n -= 4 | + | |
| - | conv += " | + | |
| - | conv += " | + | ===== JSON ===== |
| - | + | ||
| - | | + | JSON (// |
| + | |||
| + | JSON no son más que objetos (que son equivalentes a los diccionarios de Python) y listas. | ||
| + | |||
| + | Se trata de texto. | ||
| + | |||
| + | | ||
| + | |||
| + | ==== JSON en Python ==== | ||
| + | |||
| + | Aspecto de un JSON, que lo representamos como string: | ||
| + | |||
| + | <code python> | ||
| + | datos_json = ''' | ||
| + | { | ||
| + | | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ] | ||
| + | }, | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | | ||
| + | } | ||
| + | ''' | ||
| </ | </ | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | <code python> | ||
| + | # Biblioteca de Python para el tratamiento de JSON | ||
| + | import json | ||
| + | |||
| + | # Cargamos a partir de un string un objeto JSON/ | ||
| + | datos = json.loads(datos_json) | ||
| + | |||
| + | type(datos) # dict | ||
| + | |||
| + | datos.keys() # dict_keys([' | ||
| + | |||
| + | glossary = datos[' | ||
| + | |||
| + | glossary.keys() # dict_keys([' | ||
| + | |||
| + | paises_capitales = { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | |||
| + | type(paises_capitales) # dict | ||
| + | |||
| + | # Si queremos pasar de un diccionario a string en formato JSON | ||
| + | json.dumps(paises_capitales) | ||
| + | </ | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | Si procesamos un JSON inválido: | ||
| + | |||
| + | <code python> | ||
| + | mal_json = ''' | ||
| + | {" | ||
| + | ''' | ||
| + | |||
| + | try: | ||
| + | json.loads(mal_json) | ||
| + | except json.JSONDecodeError as error: | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | |||
| + | disculpa, Jairo, sabes hasta qué día tenemos disponible el acceso al campus virtual? | ||
informatica/programacion/python/cursos/introduccion_programacion_python/ejemplos_practicos.1682586982.txt.gz · Última modificación: por tempwin
