CursosEmpresasBlogLiveConfPrecios

Practicando el tipado estático

Clase 6 de 21 • Curso Profesional de Python

Clase anteriorSiguiente clase

Contenido del curso

Introducción

  • 1
    ¿Qué necesitas saber para tomar el curso?

    ¿Qué necesitas saber para tomar el curso?

    03:15 min
  • 2
    ¿Cómo funciona Python?

    ¿Cómo funciona Python?

    07:49 min
  • 3
    Cómo organizar las carpetas de tus proyectos

    Cómo organizar las carpetas de tus proyectos

    07:15 min

Static Typing

  • 4
    ¿Qué son los tipados?

    ¿Qué son los tipados?

    10:26 min
  • 5
    Tipado estático en Python

    Tipado estático en Python

    14:26 min
  • 6
    Practicando el tipado estático

    Practicando el tipado estático

    Viendo ahora

Conceptos avanzados de funciones

  • 7
    Scope: alcance de las variables

    Scope: alcance de las variables

    06:32 min
  • 8
    Closures

    Closures

    08:21 min
  • 9
    Programando closures

    Programando closures

    07:00 min
  • 10
    Decoradores

    Decoradores

    06:19 min
  • 11
    Programando decoradores

    Programando decoradores

    13:05 min

Estructuras de datos avanzadas

  • 12
    Iteradores

    Iteradores

    13:52 min
  • 13
    La sucesión de Fibonacci

    La sucesión de Fibonacci

    14:01 min
  • 14
    Generadores

    Generadores

    07:22 min
  • 15
    Mejorando nuestra sucesión de Fibonacci

    Mejorando nuestra sucesión de Fibonacci

    06:53 min
  • 16
    Sets

    Sets

    10:58 min
  • 17
    Operaciones con sets

    Operaciones con sets

    06:09 min
  • 18
    Eliminando los repetidos de una lista

    Eliminando los repetidos de una lista

    05:20 min

Bonus

  • 19
    Manejo de fechas

    Manejo de fechas

    08:44 min
  • 20
    Time zones

    Time zones

    08:46 min

Conclusión

  • 21
    Completaste la trilogía. ¿Cómo seguir?

    Completaste la trilogía. ¿Cómo seguir?

    01:30 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        Orazio Cappadonna Cantor

        Orazio Cappadonna Cantor

        student•
        hace 5 años

        Yo lo quise hacer de la manera mas profesional posible integrando pruebas unitarias para testear los metodos, y seria de la siguiente forma:

        Archivo palindrome.py:

        """Python module to know if a string is palindrome""" def is_palindrome(string: str) -> bool: """Returns if the string is palindrome (True or False)""" string = string.lower() string = string.replace(' ', '') return (string == string[::-1]) def run(): print(is_palindrome('Hola mundo!')) if __name__ == '__main__': run()

        Archivo prime_number:

        """Python module to know if a number is prime""" def is_prime(number: int) -> bool: """Returns True if number is prime or False if the number is not prime""" results_list = [x for x in range(2, number) if number % x == 0] return len(results_list) == 0 def run(): number: int = 73 number_is_prime: bool = is_prime(number) print(f'Is {number} a prime number? {number_is_prime}') if __name__ == '__main__': run()

        Y aqui el archivo test.py:

        """Testing the methods""" import unittest from unittest import TestCase from palindrome import is_palindrome from prime_number import is_prime class TestingFunctions(TestCase): """Tests to know if the methods works well""" def test_is_palindrome(self): """Testing is_palindrome method""" self.assertEqual(is_palindrome('Ligar es ser agil'), True) self.assertEqual(is_palindrome('Arepera'), True) self.assertEqual(is_palindrome('Esto no es un palindromo'), False) self.assertEqual(is_palindrome('ESto tampoco es un palindromo'), False) self.assertEqual(is_palindrome('Ana'), True) def test_is_prime(self): """Testing is_prime method""" self.assertEqual(is_prime(100), False) self.assertEqual(is_prime(200), False) self.assertEqual(is_prime(53), True) self.assertEqual(is_prime(23), True) self.assertEqual(is_prime(45), False) self.assertEqual(is_prime(32), False) self.assertEqual(is_prime(142), False) if __name__ == '__main__': unittest.main()

        Y por ultimo los resultados de los tests:

        .. ---------------------------------------------------------------------- Ran 2 tests in 0.001s OK
          Miguel Sanchez

          Miguel Sanchez

          student•
          hace 5 años

          Excelente aporte :0

          Sebastián Andrade

          Sebastián Andrade

          student•
          hace 5 años

          Genial!

        Ernesto Crespo

        Ernesto Crespo

        student•
        hace 5 años

        Una herramienta muy útil para validar código antes de subirlo a un repositorio git es pre-commit. Para usarlo con mypy pueden revisar artículo. Dejo un artículo con varias reglas de pre-commit para python enlace

          Jose Manuel Acevo Garcia

          Jose Manuel Acevo Garcia

          student•
          hace 5 años

          Muchisimas gracias por la info....1saludo

          Bryan Estiven Silva Mercado

          Bryan Estiven Silva Mercado

          student•
          hace 5 años

          Excelente articulo, voy a utilizarlo para refactorizar un viejo proyecto que tengo en python

        Carlos José Tun Pinzón

        Carlos José Tun Pinzón

        student•
        hace 5 años

        Modulo mypy

        El modulo mypy se complementa con el modulo typing ya que permitirá mostrar los errores de tipado débil en Python.

        Para revisar si algún archivo contiene errores de tipado ejecutamos en la línea de comandos lo siguiente:

        mypy archivo.py --check-untyped-defs

        Como resultado nos mostrará si existe algún error de compatibilidad de tipos.

          Luis Alejandro Vera Hernandez

          Luis Alejandro Vera Hernandez

          student•
          hace 4 años

          Gracias por el resumen

        Emmanuel Corral Marco

        Emmanuel Corral Marco

        student•
        hace 5 años

        Practice the static type

        • Following the tips of intermediate python course, from terminal:
        1. mkdir new_folder
        2. git init
        3. py -m venv venv
        4. touch .gitignore type in .gitignore file
        # Ignore the enviroment files when you push to github. venv
        1. avenv (alias to activate venv: .\venv\Scripts\activate)
        2. pip install mypy
        3. pip list (to check mypy)
        4. touch palindrome-py
        5. code palindrome-py
        6. Make your code!!!!
        7. mypy palindrome-py --check-untyped-defs
          Omar Rodríguez Aldama

          Omar Rodríguez Aldama

          student•
          hace 4 años

          muy buen resumen de la clase

          Luis Alejandro Vera Hernandez

          Luis Alejandro Vera Hernandez

          student•
          hace 4 años

          Esto me va a servir llevarme hasta acostumbrarme a los comandos

        Jonathan Alemán

        Jonathan Alemán

        student•
        hace 4 años

        Mi aporte en código :D . ¡Hola a todos! De esta forma realice el reto. SI tienen alguna sugerencia es más que bienvenida :) (

        prime_number_TipadoEstatico.png
        Espero les sirva ¡Nunca paren de aprender!

          Miguel Rodríguez

          Miguel Rodríguez

          student•
          hace 4 años

          Genial, aunque creo que sale sobrando la parte de -> bool , ya que al final no retornas un valor booleano.

          Jonathan Alemán

          Jonathan Alemán

          student•
          hace 4 años

          @AlexRods Tienes razón. Lo había intentado con otra forma en dónde si lo ocupaba, pero al final me decidí por esta, ya que a mi parecer me fue más fácil y corta. Agradezco tu observación

        Carlos Rodríguez

        Carlos Rodríguez

        student•
        hace 4 años

        Recomiendo mucho el linter de python pylint es super exigente en la escritura de código, te ayuda escribir código de calidad:a

        pip install pylint

        Luego generan el archivo de configuración de pylint si quieren omitir algunas reglas o modificarlas:

        pylint --generate-rcfile > .pylintrc

        Luego no se les olvide que una vez teniendo todos los módulos instalados deben generar sus requirements.txt.

        pip freeze > requirement.txt
          Eduard Giraldo Martínez

          Eduard Giraldo Martínez

          student•
          hace 4 años

          Ohh interesante, lo intentaré 🚀

          Luis Valencia

          Luis Valencia

          student•
          hace 4 años

          Excelente recomendacion

        Henry Daniel

        Henry Daniel

        student•
        hace 4 años

        Reto 1

        def is_primo(num:int)->bool: result=[i for i in range(1,num+1) if num%i==0] return len(result)==2 def run(): print(is_primo(13)) if __name__=='__main__': run()
          Juan David Diaz Ramos

          Juan David Diaz Ramos

          student•
          hace 4 años

          Debes evaluar cuando ingresas el número 1 ya que este no es primo. Saludos.

          Edú Pilares Quispe

          Edú Pilares Quispe

          student•
          hace 4 años

          Si ingresa el número 1 el len no le daría 2 así que el código está perfecto

        Heberto Nicolás Hernández Andrade

        Heberto Nicolás Hernández Andrade

        student•
        hace 4 años

        Para preparar nuestro entorno de trabajo se siguió el siguiente procedimiento:

        • Se crea una carpeta para el desarrollo del proyecto.
        • Se inicializó un repositorio de git con "git init".
        • Se creó un ambiente virtual con "python3 -m venv venv".
        • Se creó un archivo .gitignore con "touch .gitignore".
        • Dentro del archivo .gitignore se coloca la carpeta venv mediante la siguiente línea código: "venv/"
        • Se activó el ambiente virtual con ".\venv\Scripts\activate".
        • Se instaló mypy mediante "pip install mypy".
        • Se creó el archivo palindrome. py.
        Víctor Isaac Arias García

        Víctor Isaac Arias García

        student•
        hace 4 años

        Para los que estamos utilizando WSL2 y nos dio problemas inicializar el entorno virtual aca dejo el comando

        . venv/bin/activate
          GABRIEL OMAR TARAPUES RODRIGUEZ

          GABRIEL OMAR TARAPUES RODRIGUEZ

          student•
          hace 4 años

          Que error te dio?

          Gonzalo Israel Pinto Salazar

          Gonzalo Israel Pinto Salazar

          student•
          hace 3 años

          Genio gracias... gracias...

        David Silva Apango

        David Silva Apango

        student•
        hace 4 años

        Este es mi aporte, traté de usar la menor cantidad de líneas de código considerando lo siguiente:

        • Como no se necesita dividir entre el número 1 y el mismo que estamos trabajando, NO los incluyo dentro del rango.
        • En caso de que el número sea 1 NO entra en el ciclo for y se declara de inmediato que no es primo.
        • En caso de que se encuentre un sólo módulo igual a cero salimos del ciclo inmediatamente, ya que no es necesario seguir buscando (con un contraejemplo basta).
        def prime_number(number: int) -> bool: for i in range(2,number): if number % i == 0: return False return True return False def run(): n: int = int(input('Escribe un número')) if prime_number(n): print("Es primo") else: print("No es primo") if __name__ == '__main__': run()
          Fernanda Arteaga Guivin

          Fernanda Arteaga Guivin

          student•
          hace 4 años

          bueniisimo bastante concreto!

        Roberto Francisco Quijano Vicente

        Roberto Francisco Quijano Vicente

        student•
        hace 4 años

        Solución del reto con el teorema de Wilson:

        def isPrime(number: int) -> bool: """ Function that applyes the Wilson's Theorem to determine if a number is prime. """ factorial = number -1 for i in range(2, number-1): factorial *= i return (factorial + 1) % number == 0 def run(): print(isPrime(18)) if __name__ == '__main__': run()
        Gabriel Missael Barco

        Gabriel Missael Barco

        student•
        hace 4 años

        Practicando el tipado estático

        • Para checar que el código respeta el tipado que especificamos, debemos correrlo con mypy <nombre>.py --check-untyped-defs 👀. El módulo mypy nos arroja errores de tipado, por ejemplo:

          palindrome.py:9: error: Argument 1 to "is_palindrome" has incompatible type "int"; expected "str" Found 1 error in 1 file (checked 1 source file)
        • Solución al reto:

          def is_prime(number: int) -> bool: for i in range(2, number): if number % i == 0: return False return True def main(): # print(is_prime('Hola')) print(is_prime(5)) if __name__=='__main__': main()
          fidel angel ochoa

          fidel angel ochoa

          student•
          hace 4 años

          excelente, como se podria hacer con un list comprenhension?

        David Rosas

        David Rosas

        student•
        hace 4 años

        Me marco bien el error de tipado con un str y hasta metiendole float. Pero si a la funcion le meto un bool, ya sea True o False, me dice que todo esta bien:

        Success: no issues found in 1 source file

        Por que sucede esto?

          Liliana Molina Camacho

          Liliana Molina Camacho

          student•
          hace 4 años

          Me pasó lo mismo, luego revisando la función, vi que tenía un espacio entre : y str, se lo quité y con eso si me marcó el error.

          Bruno Nicolás Barajas Correa

          Bruno Nicolás Barajas Correa

          student•
          hace 4 años

          Creo que nos marca lo de Succes cuando realmente se compilo el código y no encontró ningún problema. Lo veo como bandera verde cuando nos sale eso, para después ejecutarlo de forma normal.

        Lino Tomás Vazquez Ponce

        Lino Tomás Vazquez Ponce

        student•
        hace 4 años

        ahora que lo pienso no se si debí importar typing pero bueno...acá está

        from typing import * def is_prime(num: int)-> bool: if num == 2: return True elif num == 1 or num % 2 == 0: return False else: return True if __name__ == "__main__": print(is_prime(4))
          fidel angel ochoa

          fidel angel ochoa

          student•
          hace 4 años

          muchas gracias, me parecio super simple el codigo, te comparto lo que le agregue leyendo a otros compañeros.

          def is_prime(num: int) -> bool: if num == 2: return True elif num == 1 or [i for i in range(2, num // 2) if num % i == 0]: return False else: return True if __name__ == "__main__": number = int(input('Write a number to guess if is prime: ')) print(f'Is {number} a prime number?') print(is_prime(number))```
        Diego Andrés Rojas González

        Diego Andrés Rojas González

        student•
        hace 4 años

        Si estas usando powershell y no puedes activar el entorno virtual prueba con esto:

        1. Abre powershell en modo administrador
        2. ejecuta el siguiente comando
        Set-ExecutionPolicy Unrestricted -Force

        Puedes encontrar mas información en

        André Thomas Gil Cifuentes

        André Thomas Gil Cifuentes

        student•
        hace 4 años

        Esta es mi solucion al reto, tambien puse a prueba mi creatividad para hacer el codigo lo mas efectivo posible y consegui un time complexity de O(sqrt(n))

        from math import sqrt def is_prime(n: int) -> bool: if n == 0 or n == 1: return False if n == 2 or n == 3: return True if n % 2 == 0 or n % 3 == 0: return False # Revisamos si el numero esta compuesto por # un numero primo diferente de 2 y 3. for i in range(5, int(sqrt(n)) + 1): if n % i == 0 or n % (i + 2) == 0: return False return True def main(): if is_prime(4): print("El numero es primo") else: print("El numero NO es primo") if __name__ == '__main__': main()
          Jhon Edward Bedoya

          Jhon Edward Bedoya

          student•
          hace 4 años

          🟢 @ AndrE_ Well done, but the code is a bit complex still. Try to make it more friendly and easy to read. 🦾

        Kevin Tovar

        Kevin Tovar

        student•
        hace 4 años
        def is_prime(number: int) -> bool: n = 0 for num in range(1, number + 1): if number % num == 0: n += 1 return n == 2 def run(): print(is_prime(5)) if __name__ == '__main__': run()
          Joseph Lázaro Ricardo

          Joseph Lázaro Ricardo

          student•
          hace 4 años

          Lo hice como tú, sencillito para no confundir a la banda.

        Sergio Garnica

        Sergio Garnica

        student•
        hace 4 años

        Una herramienta muy útil para revisar posibles errores en Python, como por ejemplo el tipo de datos, es utilizar Unit Testing.

        Estos dos videos lo explican muy bien: https://www.youtube.com/watch?v=1Lfv5tUGsn8 https://www.youtube.com/watch?v=6tNS--WetLI

        Nelson Porfirio Sanchez Cedron

        Nelson Porfirio Sanchez Cedron

        student•
        hace 4 años

        Aquí les dejo mi código del reto de la clase. Estoy usando el Teorema de Wilson para la prueba de primalidad.

        def is_prime(number: int) -> bool: factorial = 1 if number == 0: return false for i in range(1, number): factorial = factorial * i factorial += 1 if factorial % number == 0 and number > 1: return True else: return False
        Javier Pajarito Caicedo

        Javier Pajarito Caicedo

        student•
        hace 4 años

        ¿Qué diferencia hay entre escribir la sintaxis para tipado estático y poner un int() cuando pedimos el dato como se ve en la imagen?

        estatico.png
          Andrés Felipe Martínez Salazar

          Andrés Felipe Martínez Salazar

          student•
          hace 4 años

          El int("598") es en realidad un cast, esto convierte el string a un int en tiempo de ejecución, en cambio la sintaxis de tipado estático es mas una guía para los desarrolladores pero no afecta en tiempo de ejecucion, te das cuenta si haces algo tal que asi:

          numero : int = "598" print(type(numero))

          veras que imprime <class 'str'> porque aunque le digas que es un entero en realidad en tiempo de ejecucion le estas asignando un string.

          Santiago Ramos Morales

          Santiago Ramos Morales

          student•
          hace 4 años

          Estás casteando de un tipo a otro, está bien pero vas a tener un código muy tedioso de leer, créeme, donde trabajé tenían algo así en el software de timbrado de documentos fiscales y era un dolor de cabeza.