Básicos de programación

1

Cómo instalar Python y conceptos básicos

2

Por qué deberías aprender a programar con Python

3

Programación: qué es

4

Python 2 vs Python 3

5

Operadores matemáticos en Python

6

Tipos de datos en Python

7

Declarar variables y expresiones

8

Definir funciones con Python

9

Funciones con parámetros

10

Estructura de condicionales en Python

11

Calcular si un número es primo con Python

12

Buenas prácticas del lenguaje

Uso de strings y Ciclos

13

Comparación de strings y unicode

14

Factorial de un número con recursión

15

Manejo de strings en Python

16

Separar cadenas de texto en Python

17

Ciclos en Python con for

18

Ciclos en Python con while

19

Calcular si una palabra es palíndromo con Python

Estructuras de datos

20

Introducción a las listas en Python

21

Operaciones con listas en Python

22

Juego del ahorcado con Python

23

Interfaz del ahorcado

24

Lógica del ahorcado

25

Qué es una búsqueda binaria

26

Implementar busqueda binaria en Python

27

Diccionarios en Python

28

Encriptar mensajes usando diccionarios

29

Tuplas en Python

30

Se repite una letra en un string - Programa con tuplas

31

Uso de sets en Python

32

Dictionary comprehension - list comprehension

Uso de objetos y módulos

33

Manejo de errores en Python

34

Errores personalizados

35

Manejo de archivos en Python

36

Programación orientada a objetos en Python

37

Modelar un objeto en Python

38

Decoradores en Python

39

Paquetes y módulos

40

Entorno virtual en Python

Proyecto: Web Scraping

41

¿Qué es web scraping?

42

Implementando web scraping con Python

Proyecto: Aplicación de Terminal

43

Interfaz directorio de contactos

44

Lógica de directorio de contactos

45

Persistencia de datos

Proyecto: Aplicación web

46

Configurando el entorno de desarrollo de Google Cloud

47

Crear templates con Jinja2

48

Manejar rutas y lógica con Flask

49

Listar y eliminar contactos

Practicas comunes

50

Qué puedes construir con Python

51

Consejos para aprender a programar

Retos / Desafíos

52

Desafío 1: Crea una función que sume recursivamente

53

Desafío 2: Criptografía con binarios

54

Desafío 3: Modelar un objeto

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Calcular si un número es primo con Python

11/54
Recursos

En éste vídeo vamos a construir un programa que nos permite determinar si un número es primo o no, usando expresiones booleanas, operadores relacionales y operadores lógicos.

Recuerda:

  • Todas las funciones deben declararse con el keyword def
  • Un bug es un error en el código y requiere ser verificado

Aportes 254

Preguntas 31

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Python 3.8

def is_prime(number):
    if number < 2:
        return False
    elif number == 2:
        return True
    elif number > 2 and number % 2 == 0:
        return False
    else:
        for i in range(3,number):
            if number % i == 0:
                return False
    return True

def run():
    number = int(input('Ingresa un número: '))
    result = is_prime(number)

    if result is True:
        print('El número {} es primo.'.format(number))
    else:
        print('El número {} NO es primo'.format(number))

if __name__ == '__main__':
    run()

Hola!

Usando los conceptos aprendidos entre las clases 10 y 11 (esta clase y la anterior), decidir crear este código para saber la generación de acuerdo a la edad:

- coding: utf-8 --

def generacion(age):
if age >= 72:
print (‘Eres de la generacion Niños de la postguerra, es decir seres humanos que nacieron entre los años de 1930 y 1948’)
elif age <= 71 and age >= 52:
print (‘Eres de la generacion Baby boom, es decir seres humanos que nacieron entre los años de 1949 y 1968’)
elif age <= 51 and age >= 40:
print (‘Eres de la generacion X, es decir seres humanos que nacieron entre los años de 1969 y 1980’)
elif age <= 39 and age >= 27:
print (‘Eres de la generacion Millennials, es decir seres humanos que nacieron entre los años de 1981 y 1993’)
elif age <= 26 and age >= 10:
print (‘Eres de la generacion Z, es decir seres humanos que nacieron entre los años de 1994 y 2010’)
elif age <= 9 and age >= 1:
print (‘Eres un baby y aún no tienes generacion definida, es decir seres humanos que nacieron entre los años de 2011 y 2020’)
elif age <= 1:
print (‘No existes!!! Pero no te preocupes porque tal vez tus padres te tengan en planes’)

def run():
age = int(input('Escribe tu edad: '))
result = generacion(age)

if name == ‘main’:
run()
print (’ ‘)
print (‘Esto fue todo por ahora’)
print (’ ')
print (‘Fue un placer indicar tu generacion de acuerdo con tu edad’)

Esto me podría ayudar en las tareas del colegio!!!
que mal que ya estamos en vacaciones

¿Qué opinas David?

# -*- coding: utf-8 -*-

def calcular_pares_o_primos(number):
    if number % 2 == 0:
      return "Par"
    else:
      return "Impar"

def run():
  print("CALUCLAR PARES Y PRIMOS")

  number = int(input("Digita un número : "))

  result = calcular_pares_o_primos(number)

  print("El número {} es {}".format(number,result))

if __name__ == '__main__':
    run()```

Para generar un comentario en python debe colocar símbolo almohadilla # delante de la linea de texto si desea comentar varia lineas utilizas triple comilla.

# esto es un comentario
"""esto es un comentario
para varias lineas"""

Si en el ‘range’ le agregan otro parámetro, se puede establecer el tamaño de salto o avance que se da en cada iteración, en este caso, si le pones 2, evitamos repetir la validación de pares que se lograba con el operador matemático ‘módulo 2’ hecha en ‘elif’ anterior, a final de cuentas puede hacer la diferencia en rendimiento al momento de validar un número muy grande.

def is_prime(number):
    if number < 2:
        return False
    elif number == 2:
        return True
    elif number > 2 and number % 2 == 0:
        return False
    else:
        for i in range(3, number, 2):
            if number % i == 0:
                return False

    return True```

Los números primos son divisibles por 1 o por sí mismo. En Python, RANGE(0, un_numero) es una lista que va desde 0, 1, 2, …, hasta “un_numero”-1, es decir, no incluye el extremo final. Por esto es que el profesor David realiza el ajuste del minuto 10.

# -*- coding: utf-8 -*-

def run():
    number = int(input("Escribe un número: "))
    result = is_prime(number)
    
    if result == True:
        print("El número {} es primo".format(number))
    else:
        print("El número {} NO es primo".format(number))

def is_prime(number):
    #Si es negativo, 0 ó 1, no es primo
    if number < 2:
        return False
    #2 es el primer número primo
    elif number == 2:
        return True
    #Si es mayor que 2 pero es divisible por 2, no es primo
    elif number > 2 and number % 2 == 0:
        return False
    
    else:
        #Se revisan los números desde el 3 hasta el número bajo análisis (Sin incluirlo, propiedad de RANGE)
        for i in range (3, number):
            #Si el número es divisible completamente por uno de estos números, NO es primo
            if number % i == 0:
                return False
            
    #En el resto de casos, el número es primo 
    return True

if __name__ == "__main__":
    run()```

por qué se pausan los vídeos en cada clase ?

if result == True:

es igual a

if result:

Super sencillo, En JAVA es un poco más complejo, en la cuestión del ciclo.

Probé el 153887 por azar y resulto siendo primo n.n, lo comprobé con excel con algo similar y resulta que, efectivamente, es primo! A seguir con el curso 😄

Hola comunidad aca dejo mi codigo de como hice este ejercicio saludos. Nunca paren de aprender.

def inicio():
    print("Quieres analizar un numero? (S o N) ")
    programa = str(raw_input("")).lower().strip()
    if(programa == "s"): 
        run()
    else:
        print("Hasta luego")


def run():
    number = int(raw_input("Escribe el numero que quires analizar "))
    result = is_prime(number)

    if result is True: 
        print("Tu numero es primo ")

        return inicio()
    else:
        print("Tu numero No es primo")
        return inicio()


def is_prime(number):
    if number < 2:
        return False
    elif number == 2:
        return True 
    elif number > 2 and number % 2 == 0:
        return False
    else:
        for i in range(3, number):
            if number % i == 0:
                return False 
            else:
                return True

    



if __name__ == "__main__":
    inicio()

#mi propio codigo
def calculo(num):
    con=0
    for i in range(1,num+1):
        if num%i==0:
            con=con+1
    
    if con==2:
        return True
    else:
        return False 

def primo():
    print('NUMERO PRIMO')
    num=int(raw_input('introduzca el numero: '))
    result=calculo(num)
    print('la condicion de que su numero sea primo o no es {}'.format(calculo(num)))



if __name__=='__main__':
    primo()

¿Alguien sabe a qué hace referencia la variable i? En ningún lado la declaran

def is_prime(number):
if number < 2:
return False
elif number == 2:
return True
elif number > 2 and number % 2 == 0:
return False
else:
for i in range (3, number):
if number % i == 0:
return False

return True

def run():
number = int(input('Escribe un numero: '))
result = is_prime(number)

if result is True:
    print('Tu numero es primo')
else:
    print('Tu numero No es primo')

if name == ‘main’:
run()


def start():
    number = int(input("Ingresa un numero: "))
    result = is_prime(number)

    if result is True:
        print("El {} SI es primo".format(number))
    else:
        print("El {} NO es primo".format(number))


def is_prime(number):
    if number < 2:
        return False
    elif number == 2:
        return True
    elif number > 2 and number % 2 == 0:
        return False
    else:
        for i in range(3, number):
            if number % i == 0:
                return False
         
    return True


if __name__ == "__main__":
    start()

David, buenas tardes

¿Habrá una forma de simplificar este ejercicio? ¿con alguna otra función o así?

def calculator():

print("1. Suma")
print("2. Resta")
print("3. Multiplicacion")
print("4. Division")

choose_op = int(input("Elige el numero que corresponde a la operacion que deseas realizar:    "))

if choose_op == 1:
    num1 = int(input("Anota la primera cantidad de tu operacion:   "))    
    num2 = int(input("Anota la segunda cantidad de tu operacion:   "))
    result1 = num1 + num2    
    print("Respuesta: {}".format(result1))

elif choose_op == 2:
    num1 = int(input("Anota la primera cantidad de tu operacion:   "))    
    num2 = int(input("Anota la segunda cantidad de tu operacion:   "))
    result2 = num1 - num2    
    print("Respuesta: {}".format(result2))

elif choose_op == 3:
    num1 = int(input("Anota la primera cantidad de tu operacion:   "))    
    num2 = int(input("Anota la segunda cantidad de tu operacion:   "))
    result3 = num1 * num2
    print("Respuesta: {}".format(result3))

elif choose_op == 4:
    num1 = int(input("Anota la primera cantidad de tu operacion:   "))    
    num2 = int(input("Anota la segunda cantidad de tu operacion:   "))
    result4 = num1 / num2
    print("Respuesta: {}".format(result4)) 

else:
    print("Opcion no valida")

if name == ‘main’:
calculator()

Creo que encontré una forma mas simple de realizar el ejercicio sin el for

def is_prime(number):
    if number < 2:
        return False
    elif number == 2:
        return True
    elif number > 2 and number%2 == 0:
        return False
    elif number > 3 and number%3 == 0:
        return False
    else:
        return True

def run():
    number = int(input("Ingresa un numero: "))
    value = is_prime(number)
    if value == True:
        print("El numero es primo")
    elif value == False:
        print("El numero no es primo")

if __name__ == "__main__":
    run()

HOLA, Aqui lo intenté por mi mismo! 😄!! En Visual Studio Code

Tuve una confusión, pero ya la resolví. Lo dejo como aporte por si a alguien más le pasa.

No entendía porqué usar un “For” para todos los números antes del propio número, en vez de un “While”, ya que un ciclo “For” normalmente se sigue ejecutando hasta terminar toda la lista de valores a revisar.

R/ La función “return False” implica que la función termine y retorne el valor “False”, interrumpiendo la ejecución de la función y “rompiendo” el ciclo “For”. En este sentido, el “return True” que se encuentra al final de la función sólo se ejecuta, si ninguna de las otras condiciones se cumple (viene haciendo las veces de un “else” desde cierto punto de vista.

Espero haber ayudado a alguien.

Saludos

En la función para saber si es primo o no, yo utilizo un contador que verifica que sea divisible solo dos veces (para uno y para si mismo)

def is_prime(number):
    if number<=1:
        return False
    else:

        p=0
        for i in range(1,(number+1)):
            if number%i==0:
                p=p+1

        if p==2:
            return True
        
        else:
            return False    

como la suma de las cifras de 87 es 15 y es multiplo de 3 entonces es divisible por 3. desempolvado la regla de divisibilidad del colegio jaja.

pass es una operacion nula, es decir que cuando se ejecuta no hace nada, por eso es comunmente usada como place holder en funciones o clases con un comportamiento que aún no se ha definido
por ejemplo:

  • def my_funtion(): pass
  • class MyClass: pass

Yo le elimine la condicional elif number > 2 e inicializo el for a apartir de 2 para ahorrar lineas de código, pues no es necesario contar

2 es primo por lo que comienzo a contar a realizar la división a partir de este número

Utilizo un contador para determinar que el numero NO es primo, y coloco su rango divisor hasta la raiz cuadrada del numero, en criptografia esta comprobado que si hasta ahi no encuentro un numero que al dividir su residuo sea cero, no hay necesidad de seguir buscando hasta el mismo numero y volver el algo mas eficiente.

import math


def is_prime(number):
    account = 0
    raiz = int(math.sqrt(number))
    divisor = range(2, raiz+1)

    if number <= 1:
        return False
        
    else:
        for i in divisor:
            if number % i == 0:
                account =+ 1

        if account >= 1:
            return False

        else:
            return True


def run():
    print('N U M E R O S  P R I M O S')
    print('*' * 50)
    print('')

    number = int(input('Escribe un numero para saber si es primo: '))
    result = is_prime(number)

    if result is True:
        print('{} es un numero PRIMO'.format(number))

    else:
        print('{} NO es un numero primo'.format(number))


if __name__ == "__main__":
    run()

Solo apruebas si sacas 9 o 10.

def nota (numero):
    if numero >= 9 and numero < 11:
        return True      
    else:
        return False
    
    return True  





def run():
    numero = int(input("Que nota sacaste? : "))
    resultado = nota(numero)

    if resultado is True:
        print("Aprobaste")
    else:
        print("Eres un pendejo")
    


run() ```

Escribo aquí la función para ver si la entiendo:

  1. Corremos el programa con la funció if name
  2. Llamamos a la función run
  3. Nos vamos a la línea donde definimos la función run
  4. En run declaramos la variable number, que es igual a entero, generamos un input, en el que solicitamos ingresar un número
  5. en run declaramos la variable result, que es igual a la función is_prime que tiene como parámetro número)
  6. Se declara que si la variable result es verdadera se imprime “Tu número es Primo”, de lo contrario, “Tu número NO es primo”.
  7. Se definió la función is_prime*, que usa como parámetro la variable number
  8. Si number es menor que 2, retorna False
  9. Si number es similar a 2, retorna True
  10. Si number es menor que 2 y el modulo de number es similar a 0, retorna falso
  11. Se crea un bucle que analiza el rango, 3 hasta la variable number introducida con el input.
  12. Si el módulo de number y el rango generado es similar a cero, retorna falso.
  13. Si es diferente a 0, retorna verdadero.
from math import ceil

def run():
    numero = int(input("Ingrese un numero para saber si es primo: "))

    if primo(numero):
        print("El numero SI es primo")
    else:
        print("El numero ingresado NO es primo")

def primo(n):
    x = ceil((n / 2))
    while x > 1:
        if n % x == 0:
            return False
            break
        x = x - 1
    return True

if __name__ == '__main__':
    run()```

Funciono correctamente, un pequeño cambio, para evaluar si una variable es True, solamente hay que poner: if <nombre variable>:

# -*- coding: utf-8 -*-

def is_prime(number):

    if number < 2:
        return False
    elif number == 2:
        return True
    elif number > 2 and number % 2 == 0:
        return False
    else:
        for i in range(3, number):
            if number % i == 0:
                return False
            else:
                return True
    

def run():

    number = int(input('Escribe un numero'))
    result = is_prime(number)

    if result:
        print('Tu numero es primo.')
    else:
        print('Tu numero no es primo.')


if __name__ == '__main__':
    run()```

Me encanta, me funcionó todo perfecto hasta que hice una locura de número y me respondió con algo no programado (es decir, no me dijo si era o no era primo, sino que respondió con “Killed: 9”).

Alguien sabe que u?

C A L C U L A D O R A  D E  N U M E R O S  P R I M O S

Escribe un número: 12312312125
Killed: 9
MacBook-Pro-de-Mauricio:desktop mauriciocasanova$ ```

Hola, mi código:

    if number < 2:
        return False
    elif number == 2:
        return True
    elif number > 2 and number%2 == 0:
        return False
    else:
        for i in range(3, number):
            if number % i == 0:
                return False
    return True

def run():
    #pass: dice a python que aqui ira información pero por ahora estará vacia
    number = int(input('Escribe un número: '))
    result = is_prime(number)

    if result is True:
        print('Tu número es primo')
    else:
        print('Tu número no es primo')    

if __name__ == '__main__':
    run()```

if: si la condición
elif: si no se cumple la anterior condición
else: si no se cumple ninguna condición haga lo siguiente

Ha empezar a calcular números primos de forma re-cursiva y optimizada con más de 1000 dígitos para venderse los a los bancos o para un algoritmo de cifrado XD

Si no me equivoco la manera mas eficiente de hacerlo es asi (esto va adentro de tu funcion ):

necesitas el import math

squareRoot = math.sqrt(number)
for i in range(2, int(squareRoot) + 1):
    if number % i == 0:
        return False
return True

Super el ejercicio

def is_prime(number): 
    if number < 2:
        return False
    elif  number == 2:
        return True
    elif number > 2 and number %2 == 0:
        return False
    else: 
        for i in range(3, number):
            if number % i == 0:
                return False
            
    return True
def run():
    number = int(input('Escribe un numero: '))
    result = is_prime(number)

    if result is True:
        print('El numero {} es primo'.format(number))
    else:
        print('El numero {} no es primo'.format(number))

if __name__ == '__main__':
    run()

La función range() llega hasta un número menos, ver el siguiente ejemplo:

for i in range(3,6):
print(format(i))

3
4
5

def isPrimeNumber(number):
    if(number % 2 == 0 or number < 2):
        return False
    else:
        return True


def main():
    print("N U M E R O S  P R I M O ")
    number = int(input("Ingrese un numero: "))
    
    if(isPrimeNumber(number)):
        print("{} es un numero primo.".format(number))
    else:
        print("{} no es un numero primo.".format(number))

if(__name__ == "__main__"):
    main()

Los divisores de 87 son: 1, 3, 29, 87

Mi aporte, el ejercicio estuvo muy bueno , incluí dos condiciones en una sola

EL raw_input NO funciona en la consola desde Python3.7 creo (creo q’ en adelante) alguien me puede confirmar ?
pues a mi no me funciona : / ¿saben porqué ?

Para la tabla de los primeros 100

def IsPrimo(numero):
    if numero < 2 or  numero == 0:
        return False
    elif numero == 2:
        return True
    elif numero > 2 and numero % 2 == 0:
        return False
    else:
        for i in range (3, numero):
            if numero % i == 0:
                return False
        return True


def lista():
    for numero in range(101):
        primo = IsPrimo(numero)

        if primo is True:
            print(f'{numero} es primo')
        else:
            print(f'{numero} no es primo')
    numero+=1

if __name__ == "__main__":
    lista()```

Listo

Hola, para los principiantes, logré hacerlo sin funciones. Por favor comentarios.

#Este programa define si un numero es primo o no

numero=int(input("ingrese un número: "))

if numero == 2:
    a = 1    
elif numero < 2 or numero %2 == 0:
    a = 2    
else: 
    for i in range(3, numero):
        if numero % i == 0: 
            a = 2
        else:
            a = 1         
        
if a == 1:
    print(f'El número {numero} SI es primo ')
else:
    print(f'El número {numero} NO es primo ')

Basado en este video y el anterior, les dejo mi “calculadora” de estado de salud.

Comparto una versión mejorada del código. Esta solución reduce a la mitad las iteraciones del programa, y además evalúa los números de manera más general (no hace énfasis en evaluar si el número es menor, igual o mayor que 2)

  1. Los divisores de un número primo deben ser valores enteros positivos. Sabiendo esto, podemos evaluar los divisores sólo hasta la mitad (valor entero), ya que ningún número entero que se divida por una valor mayor que su mitad puede dar otro entero. Entonces el ciclo for debe tener un rango que comienze en 1 y termine en la mitad entera del número que evaluamos, es decir (numero//2). Sin embargo, falta un detalle. Por defecto la función range evaluar todos los números de su rango sin incluir el límite superior. Para que lo tenga en cuenta, debemos incrementar 1 al límite superior del rango. En definitiva el ciclo for debe recorrer los números desde 1 hasta (numero//2)+1

  2. Por definición un número primo de ser un entero positivo cuyos divisores solo son el 1 y el mismo número. Es decir, que los números primos sólo tienen 2 divisores (El 1 es un caso particular porque sólo tiene un divisor). Entonce si buscamos iterativamente los divisores de un número y sólo encontramos 1 (en el caso particular del 1) o 2 divisores, el número es primo. Si tiene más de 2 divisores, No es primo. Como sólo vamos a evaluar hasta la mitad del numero dado, si encontramos 1 sólo divisor, el número será primo

Espero que alguien le sirva

(

Dejo mi implementación para quien pueda ser útil

# -*- coding: utf-8 -*-


def isPrime(val):
	count = 0

	if(val == 1):
		return False
	elif(val == 2):
		return True	
	else:
		for i in range(2, val+1):
			if(val%i == 0):
				count = count+1

			if(count > 1):
				return False

	return True


def main():
	print("Determinar si un número es primo")
	val = int(input	("Ingrese el número: "))
	print(isPrime(val))

if __name__ == '__main__':
		main()```

Código comentado de la clase del día de hoy:

# Programa para determinar si un numero es primo
# Los numeros primos son aquellos que son divisibles entre uno y entre ellos


def is_prime(number):
    if number < 2:  # Operador relacional
        return False
    elif number == 2:
        return True
    elif number > 2 and number % 2 == 0:  # Si el numero se divide entre dos y no nos sobra nada, se divide entre dos y no es primo
        return False
    else:
        for i in range(3, number):  # Probamos todos los numeros a partir de tres hasta el ingresado
            if number % i == 0:  # Si el numero ingresado es divisible entre un numero del rango que hemos generado, no es un primo
                return False
    return True


def run():
    # pass es una forma de decirle a Python que esta funcion generara o tendra algo en el futuro
    number = int(input("Ingresa un numero: "))

    result = is_prime(number)  # Almaceno el valor booleano

    if result == True:
        print("El numero ingresado es un primo")
    else:
        print("El numero ingresado no es un primo")


if __name__ == '__main__':
    run()
def is_prime(number):
    # si el número es menor que 2, no es primo
    if number < 2:
        return False
    # si el numero es igual a 2, es primo
    elif number == 2:
        return True

    # si el número es mayor que 2 y es divisible entre 2, no es primo 
    elif number > 2 and number % 2 == 0:
        return False
    
    # si el numero es mayor que 2 y no es divisible entre 2
    else:
        for i in range(3, number):
            if number % i == 0:
                return False
        return True
def run():
    number = int(input('Escribe un número:'))
    result = is_prime(number)

    if result is True:
        print('Tu numero es primo')
    else:
        print('Tu numero No es primo')

if __name__ == '__main__':
    run()```

Solución refactorizada de los números primos, atento a feedback?

def is_prime(number):
  if number > 1:
    for i in range(2, number+1):
      if number % i == 0:
        break
    if i == number:
      return 'Primo'    
  return 'No Primo'
if __name__ == '__main__':
  number = int(input('Escribe un número: '))
  print('Tu número es {}'.format(is_prime(number)))

Les dejo un ejemplo aplicando el teorema de Wilson:

# -*- coding: utf-8 -*-

def primo(n):

    if n == 0 or n == 1:
        return print(f'No es primo')
    else:
        n = n - 1
        def factorial(n):
            if n == 1:
                return 1
            return n * factorial(n - 1)

        return print(f'Es primo') if (factorial(n) + 1)%(n+1) == 0 else print(f'No es primo')

if __name__ == '__main__':
    number = int(input('Ingrese un numero: '))
    my_test = primo(number)

Tengo este problema:

C:\Users\Sammuel\Documents\pythonprojects>python ej5.py
  File "ej5.py", line 17
    else:
       ^
SyntaxError: invalid syntax```

Aporto una solución es con Python 3

def factor():
    #n > 1 (n - 1)! n == n-1

    n = int(input("Digita tu numero: "))
    if n > 1:
        fac = factorial((n-1)) % n

        if fac == n-1:  
            print("Este numero es primo")
        else:
            print("Este numero No es primo")
    else:
        print("Este numero No es primo")

    # point enter
if __name__ == "__main__":
    from math import factorial
    factor()

Utilice la palabra reservada en la funcion. Arrojo el siguiente mensaje.

File "c:/Users/kevin/Documents/Cursos/Phyton/codigo/p1/primo.py", line 9, in run  
    resultado = is_primonumber()
NameError: global name 'is_primonumber' is not defined

¡¡¡Excelente ejemplo!!!

Otra clase muy buena para romperse la cabeza un rato con varios programas.

No entiendo este pedazo de código?
for i in range(3, number):
if number % i == 0:
return False

pues si el usuario ingresa un numero, por ejemplo 3 y el i empieza en 3. Entonces 3 % 3 == 0 y debería arrojar False. Alguien me podría explicar por qué arroja True(desde la parte matemática). Aclaro que el código esta bien escrito y arroga los resultados correctos, solo que me surge esa inquietud.

Primo o no primo

def is_prime(number):
    if number < 2:
        return False #Prime
    elif number == 2:
        return True #Prime
    elif number > 2 and number % 2 == 0:
        return False # Not Prime
    else:
        for i in range(3, number):
            if number % i == 0:
                return False #Not Prime
    
    return True #Prime


def run():
    number = int(input("Write a number: "))
    is_prime(number)
    result = is_prime(number)

    if result is True:
        print(f"The number {number} is prime")
    else:
        print(f"The number {number} is not prime")


if __name__ == "__main__":
    run()

Hace falta poner el boleano junto con return en python 3 ,por que yo creo que no y bueno no estoy muy seguro.

Hice todo el código y pude realizar el ejercicio y me funcionó

# -*- coding: utf-8 -*-
def palindrome2(word):
    reversed_word = word[::-1]

    if reversed_word == word:
        return True

    return False

def palindrome(word):
    reversed_letters = []

    for letter in word:
        reversed_letters.insert(0, letter)

    reversed_word = ''.join(reversed_letters)

    if reversed_word == word:
        return True

    return False


if __name__ == '__main__':
    word = str(raw_input('Escribe una palabra: '))

    result = palindrome2(word)

    if result is True:
        print('{} SI es un palindromo.'.format(word))
    else: 
        print('{} NO es un palindromo'.format(word))

Aprendiendo mucho, me parece excelente

# -*- coding: utf-8 -*-

def is_prime(number):
    if number < 2:
        return False
    elif number == 2:
        return True
    elif number > 2 and number % 2 == 0:
        return False
    else:
        for i in range(3, number):
            if number % i == 0:
                return False 
            
        return True


def run():
    number = int(raw_input('Escribe el número:  '))
    result = is_prime(number)

    if result is True:
        print('Tu número es primo')
    else:
        print('Tu número NO es primo')

if __name__ == '__main__':
    run()

este seria el error que aparece si no colocas PASS

IndentationError: expected an indented block

Calculando si un numero es primo o par

<code>def is_prime(number):
    if number < 2:
      return False
    elif number == 2:
        return True    
    else:
        for i in range(2, number):
            if number % i == 0:
                return False
            
    return True

def main():
    print("CALUCLAR PARES Y PRIMOS")

    number = int(input("\nDigita un número : "))
    result = is_prime(number)

    if result is True:
        print('El {} es un número primo'.format(number))
    else:        
        print('El {} no es un número primo'.format(number))

if __name__ == '__main__':
    main()

compañeros tenga en cuenta la indentación o los espacios

mi aporte :

mejorando

Excelente, me funciono a la primera, tener cuidado con el if y el else ya que llevan dos puntos : al finalizar la condicional.

  • if condicìon :
  • else:

No olvides verificar tu código muchas veces.

Para que el usuario digite el número en otra línea es bueno usar \n que brinda dicho salto de línea. Es solo cuestión de estética. 😃

# -*- coding: utf-8 -*-

def run():
    ingresarNumero = int(input('Por favor ingrese el número: '))
    result = is_prime(ingresarNumero)

    if result is True:
        print('El número {} es primo'.format(ingresarNumero))
    else:
        print('El número {} no es primo'.format(ingresarNumero))

def is_prime(ingresarNumero):
    if ingresarNumero < 2:
        return False
    elif ingresarNumero == 2:
        return True
    elif ingresarNumero > 2 and ingresarNumero % 2 == 0:
        return False
    else:
        for i in range(3,ingresarNumero):
            if ingresarNumero % i == 0:
                return False
                
    return True


if __name__ == '__main__':
    run()```

Alguien pude explicarme por favor por que en la linea 8 al definir el numero divisible entre dos, se agrega un = 0 (number % 2 ==0) ?

Si no escribimos el pass, Python nos muestra un error porque esperaba un bloque con indentración

Aquí un código más legible, no es necesario poner la condición de main al ejecutar un script, con el simple hecho de mandar a llamar tu función ya está bién. Cualquier pregunta me la hacen saber ♥

Me siento todo un programador super Senior… gracias por la clase

Buen ejercicio!

Me da este error al iniciar mi código y no se como puedo arreglarlo:

Traceback (most recent call last):
File “c:/Users/Jorge/Desktop/Cursos/Curso de Python/ejercicio11.py”, line 30, in <module>
run()
File “c:/Users/Jorge/Desktop/Cursos/Curso de Python/ejercicio11.py”, line 19, in run
number = int(raw_input('Escribe un número: '))
NameError: name ‘raw_input’ is not defined

Es bueno aclarar que l número 1 es primo .Por ende el código debe ser corregido en el aspecto de considerar que solo son primos números a partir de 2.

ok

Repasando usando la app de platzi la cual está muy buena

todo bien gracias

Les comparto un código que se puede obtener cualquier numero primo sin usar ciclos.
Nota: el código esta hecho en Python 3.7.1

<code>
def primo(numero):
    if (numero < 2):
        return False
    elif numero==2 or numero==3 or numero==5 or numero==7:
        return True
    elif numero%2==0 or numero%3==0 or numero%5==0 or numero%7==0:
        return False
    else:
        return True
def main():
    numero=int(input('Escribe un numero: '))
    numero_primo=primo(numero)
    if numero_primo==True:
        print('El numero {} si es primo'.format(numero))
    else:
        print('El numero {} no es primo'.format(numero))
if __name__=='__main__':
    main()

Les comparto mi código, espero que este curso les este gustando tanto como a mi.

def is_prime(number):
  contador = 0
  for i in range(1, number):
    if number % i == 0:
      contador += 1
  if contador == 1:
    return True #El numero es primo
  else:
    return False #El numero NO es primo

def run():
  number = int(input('\nEscribe un número: '))
  if is_prime(number):
    print('\n → {} es un número primo \n\n'.format(number))
  else:
    print('\n → {} no es un número primo \n\n'.format(number))


if __name__ == "__main__":
  run()

Les comparto mi código

def esPrimo(number):
	contador=0
	if number<2:
		return False
	else:
		for i in range(1,number):
			print(i)
			if (number%i==0):
				contador+=1
	if contador==1:
		return True
	else:
		return False
def run():
	print('Programa que calcula si un numero es primo')
	number=int(input('Introduce el numero a evaluar:'))
	if esPrimo(number):
		print('El número {} si es primo'.format(number))
	else:
		print('El número {} no es primo'.format(number))

if __name__ == '__main__':
	run()```
#  -*- coding: utf-8 -*-
def main():
    print ("Programa para determinar si un número es primo")
    print ("")
    number = int(raw_input("Ingrese el número a verificar: "))

    if (evaluation_number(number)):
        print ("El número {} es primo".format(number))
    else: print ("el número {} no es primo".format(number))

def evaluation_number(x):
    result = True
    for i in range(x):
        i = i + 1
        rest = x % i
        if (i != 1 and rest == 0 and i != x) :
            result = False
    return result

if __name__ == "__main__":
    main()```

Comparto mi código, me parece que es una manera más eficiente de saber si un número es primo

def is_prime(number):
   if number != 0:
      counter = 0
      for i in range(1,number):
            if number % i == 0:
               counter = counter + 1
      if counter <= 2:
         return True
      else:
         return False
   else:
      print('El numero debe ser diferente de 0')
      run()
def run():
   number = int(raw_input('Ingresa numero para ver si es primo: '))
   result = is_prime(number)
   print('')

   if result:
      print('{} si es primo'. format(number))
   else:
      print('{} NO es primo'. format(number))

if __name__ == '__main__':
   run()
<h1>-- coding: utf-8 --</h1>

def is_prime(number):
if number < 2:
return False
elif number == 2:
return True
elif number > 2 and number % 2== 0:
return False
else:
for i in range(3, number):
if number % i==0:
return False
return True

def run():
#pass #Definimos una función pero aún no le hemos puesto nada
number= int(input('Escribe un número: '))
result= is_prime(number)

if result is True:
    print('Tu número es primo')
else:
    print('Tú número no es primo')

if name == ‘main’:
run()

Pequeño aporte:
Si la consola les muestra el siguiente error:
"$ >SyntaxError: Non-ASCII character ‘\xc3’ in file…"
Debemos agregar #Coding=utf-8 a nuestro código

dejo aquí un cambio que le hice para que busque todos los primos en los primeros 10,000 o el rango que quieras en positivo

def run():
    isprime = True;
    # especifica el rango que quieras
    m = 10000;
    array = [2];
    for i in range(3,m):
        for x in array:

            test = i / x;
            mod = i % x;
            if mod == 0 and test > 1:
                isprime = False;
                break;
        if isprime:
            array.append(i);
        isprime = True;
    return array;
if __name__ == "__main__":
    # aún no se como funciona bien el print asique si puedes modificarlo
    print('Los Primos entre el rango de 2 a m son:');
    print(run());

pueden poner el range que gusten y buscar su numero primo XD (el codigo esta optimizado lo mas que pude… todos los aportes para optimizarlo son agradecidos por anticipo)

from math import sqrt

c = 1
primos = [2,3]

for i in range(3,100,2):
	flag = True
	raiz = sqrt(i)
	for p in primos:
		if (i%p) == 0:
			flag = False
			break
		if p > (raiz+1):
			break

	if flag == True:
		c = c + 1
		primos.append(i)
		#print('{} - {}'.format(c,i))

print((len(primos)-1)+1)```

En la parte donde dice
if result is True: …
puede ser reemplazado por if result:

nose porque pero cuando se ejecuta un raw_input(‘hi’) no me hace render del texto hasta que yo ingreso algo.

que raro que nadie noto que se puede sacar los numeros pares con un range para no recorrerlos, y que los numeros divisibles entre 3 tampoco necesitas recorrerlos y con esto los unicos numeros que quedan por recorrer son los previos numeros primos… insisto, es raro que nadie lo notara

Antes de ver el video trate de hacerlo yo mismo, pero no estaba bien estructurado mis condiciones y me arrojaba como primos algunos numeros que no eran, viendo el vídeo me acorde de algunas cosas que enseño freddy en su curso de programacion basica, con el ejemplo Fizz & Buzz y se fue aclarando el panorama, buen programa

El código podría quedar así (lo programe aparte así que capaz hay error de indentation)



def prime_or_not(num):
    if num < 2:
        return False

    else:
        for i in range(2, num):
            if num % i == 0:
                return False
    return True
while True:

    num = int(input('Escriba un numero: '))

    ans = prime_or_not(num)
    if ans == True:
        print("El numero es primo")
    else:
        print("El numero no es primo")

Hola, agregué el análisis a partir de 2 en el for para simplificar un poco más la función

# -*- coding: utf-8 -*-
def is_prime(number):
	if number < 2:
		return False
	for i in range(2, number-1):
		if number % i == 0:
			return False		
	return True 

def run():
	number = int(raw_input('Escribe un numero:'))
	result = is_prime(number)
	if result is True:
		print('Tu número es primo')
	else:
		print('Tu número NO es primo')

if __name__ == '__main__':
	run()
def is_prime(number):
  
    if number < 2:
        return False
    
    for i in range(2,number):
        
        if number % i == 0:
           return False
    
    return True
   

def run():
    print('..::: NUMEROS PRIMOS :::..')
    print('')
    number = int(input('Ingrese un numero =>: '))
    result = is_prime(number)
    print('{} ¿Es primo?: {}'.format(number,result))

if __name__ == '__main__':  
    run()

Bueno mi codigo siento que fue un poquito mas simplificado. Me costo un poco entenderle la logica, pero creo que es mas simple, ya que todos los números pueden ser divisibles entre 3 y 2 siempre su resultado será 0 , mientras que solo los primos darían como un resultado algo diferente a 0

# -*- coding: utf-8 -*-

def is_prime(number):
    if(number < 2):
        return False
    else:
#Si todos los numeros que ingrese pueden dividirse entre el rango a partir de 2 en adelante
# y su resultado sea 0 entonces no es primo
        for i in range(2, number):
            if number % i == 0:
                return False
    return True


def run():
    number = int(input('Escribe un Número: '))
    result = is_prime(number)

    if (result):
        print('Número ingresado, es primo')
    else:
        print('Número ingresado, no es primo')


if __name__ == '__main__':
    run()


hey!! que tal compañeros!!!

Me puse a crear cosas locas e hice un codigo donde te dice cuales numeros son primos hasta el numero que tu indicas!!!

# -*- coding: utf-8 -*-
def isPrime(number):
    prime=0
    for i in range(2,number,1):
        module=number % i
        if module==0:
            prime=prime+1

    return prime

def run():
    number=int(input('escribe un numero:'))
    for i in range(2,number+1,1):
        if isPrime(i)==0:
            print('${} Numero primo'.format(i))
        else:
            print('${}'.format(i))

if __name__=='__main__':
    run()

#-- coding: utf-8 --

def is_prime(number):
if number<2:
return False
elif number == 2:
return True
elif number > 2 and number % 2 == 0:
return False
else:
for i in range(3, number):
if number % i == 0:
return False

return True

def run():
number = int(raw_input('Escribe un número: '))
result = is_prime(number)

if result is True:
	print('Tu número es primo')
else:
	print('Tu número NO es primo')

if name == ‘main’:
run()

Comparto mi código