Autor: Luis Fernando Apáez Álvarez
-Curso PyM-
Práctica 6: Funciones
Fecha: 20 de Agosto del 2022
Solución
Descripción: En esta práctica crearemos una función que nos permita determinar si un número es primo o no. Para ello ocuparemos el código que se empleo en la práctica anterior, y lo adaptaremos según se especifique.
print("-" * 70)
print("¡Bienvenido a la calculadora de números primos!")
print("-" * 70)
num = int(input("Ingrese el número: "))
# Creamos la lista divisores, utilizando el concepto de
# listas de comprensión.
# No olvides, tambien, implementar dentro un if
divisores = [ i for i in range(1, num + 1) if num % i == 0]
# Calculamos la longitud de la lista _divisores_
# y la almecenamos en una variable auxiliar
long_div = len(divisores)
# Imprimiremos un mensaje. Si long_div es igual a dos
# entonces el numero que ingreso el usuario es un numero
# primo, si no, entonces el numero no es primo
if long_div == 2:
print(f"El número ingresado {num} es primo")
else:
print(f"El número ingresado {num} NO es primo")
---------------------------------------------------------------------- ¡Bienvenido a la calculadora de números primos! ---------------------------------------------------------------------- Ingrese el número: 100 El número ingresado 100 NO es primo
lo que deberás hacer será convertir el código anterior en una función, de modo que:
Para ello:
# Le arrojamos un mensaje inicial al usuario:
print("-" * 70)
print("¡Bienvenido a la calculadora de números primos!")
print("-" * 70)
num = int(input("Ingrese el número: "))
# ------------------------------------------------------------------------------
# Define aqui la funcion que se te pide:
def es_primo(p) -> str:
"""Función de un parámetro que rotorna un mensaje:
* si el número p es primo, se retorna que, en efecto,
dicho número es primo,
* si el número p no es primo, se retorna que, en efecto,
dicho número no es primo,"""
# Lista de divisores del numero p
divisores = [ i for i in range(1, p + 1) if p % i == 0]
# Calculamos la longitud de la lista _divisores_
# y la almecenamos en una variable auxiliar
long_div = len(divisores)
# Retornamos un mensaje. Si long_div es igual a dos
# entonces el numero que ingreso el usuario es un numero
# primo, si no, entonces el numero no es primo
if long_div == 2:
return f"El número ingresado {p} es primo"
else:
return f"El número ingresado {p} NO es primo"
# ------------------------------------------------------------------------------
# Utiliza la funcion que definiste e ingresa en el parametro el valor
# de num que ingreso el usuario.
# Tu funcion debera mostrar en consola si el numero que el usuario ingreso
# es primo o no
print(es_primo(num))
print("-" * 70)
---------------------------------------------------------------------- ¡Bienvenido a la calculadora de números primos! ---------------------------------------------------------------------- Ingrese el número: 19 El número ingresado 19 es primo ----------------------------------------------------------------------
print(es_primo(3))
print(es_primo(4))
print(es_primo(21))
El número ingresado 3 es primo El número ingresado 4 NO es primo El número ingresado 21 NO es primo
Lo que harás ahora será definir una función con las especificaciones:
Y lo que hará tu función será recibir uno o más números, y determinar si cada uno de ellos es primo o no. Para lo anterior, dentro de la definición de esta nueva función, deberás ocupar la función que definiste en la Parte 1. Además, esta nueva función deberá retornar más de un valor.
Por ejemplo, tu nueva función debe actuar de manera parecida a lo siguiente:
tu_nueva_funcion(3, 91159, 5)
Salida:
Es primo, Es primo, No es primo
# Escribe aqui la definicion de la funcion que se te pide
def son_primos(*numeros) -> list[str]:
"""Función de argumentos variables que determina
si un numero es primo o no. La funcion
retorna una lista con los mensajes correspondientes."""
# Creamos una lista vacia auxiliar
# para guardar el mensaje correspondiente
# si el numero es primo o no
lista_msj = []
# Determinamos si cada uno de los numeros en la tupla
# numeros es primo o no y almacenamos dicho mensaje
# en la lista auxiliar
for p in numeros:
lista_msj.append( es_primo(p) )
# Retornamos la lista _lista_msj_
return lista_msj
# Probamos la funcion
print(son_primos(3, 91159, 5))
['El número ingresado 3 es primo', 'El número ingresado 91159 es primo', 'El número ingresado 5 es primo']
from pprint import pprint as pp
# Alternativa:
def es_primo2(p) -> str:
"""Función de un parámetro que rotorna un mensaje:
* si el número p es primo, se retorna que, en efecto,
dicho número es primo,
* si el número p no es primo, se retorna que, en efecto,
dicho número no es primo,"""
divisores = [ i for i in range(1, p + 1) if p % i == 0]
long_div = len(divisores)
if long_div == 2:
return "Es primo"
else:
return "No es primo"
# ---------------------------------------------------------
def son_primos2(*numeros) -> dict[str]:
"""Función de argumentos variables que determina
si un numero es primo o no. La funcion
retorna una lista con los mensajes correspondientes."""
# Creamos un diccionario vacio
dict_msj = {}
for p in numeros:
# asignamos los valores key-value
dict_msj[p] = es_primo(p)
# Retornamos el diccionario creado
return dict_msj
# Probamos la funcion
pp(son_primos2(3, 91159, 5))
{3: 'El número ingresado 3 es primo', 5: 'El número ingresado 5 es primo', 91159: 'El número ingresado 91159 es primo'}