[ Foro de Python ]

PROBLEMA CON UN EJERCICIO

14-Feb-2023 16:57
Invitado (Rocio)
1 Respuestas

HOLA BUENAS TARDES PORFAVOR AVER SI ALGUIEN ME PUEDE AYUDAR CON UN EJERCICIO MUY IMPORTANTE Y NO SE NI COMO HACERLO. PORFAVOR AYUDARME
EL EJERCICIO ES EL SIGUIENTE:
Para este programa deberás definir una tupla compuesta por 15 números enteros positivos aleatorios entre 0 y 100, estos números serán los ganadores del
último sorteo de la lotería.
Tras ello, el programa solicitará al usuario que introduzca un número entero
positivo. El programa deberá comprobar que lo introducido por el usuario es un
número entero positivo de igual forma que se realizó en el ejercicio 1, el programa no podrá continuar hasta que el dato introducido cumpla los requisitos,
es decir, sea un número entero positivo.
Una vez que el dato introducido sea correcto, el programa mostrará por pantalla la lista de números ganadores del sorteo e informará del número ganador
más pequeño y del número ganador más grande.
Después, el programa comprobará si el número indicado por el usuario, es decir, aquel con el que ha participado en el sorteo, se encuentra entre los ganadores (es decir, en la tupla). Si el número indicado por el usuario aparece en la
lista de números ganadores el usuario habrá ganado 15€. Si el número se ha
repetido varias veces, por cada repetición se le sumarán 5€ extra. El programa
deberá informar al usuario del resultado y después finalizará. Ejemplo: Si el
usuario introduce el 7 y este sólo aparece una vez el usuario habrá ganado 15€.
Por el contrario, si el 7 apareciese dos veces, habría ganado 15€ por aparecer
en la lista y 5€ extra por la repetición, total 20€.
Ejemplo 1: “¡Felicidades! Su número: ….. se encuentra dentro de la lista de ganadores. Ha ganado un total de ….€”
Ejemplo 2: “¡Felicidades! Su número: ….. se encuentra dentro de la lista de ganadores y además se ha repetido … veces . Ha ganado un total de …. €”
Si el número no aparece en la lista de números ganadores se le deberá preguntar al usuario si dispone de otro número. Si el usuario responde SI entonces el
programa se repetirá, si el usuario responde NO el programa finalizará, si el
usuario responde algo diferente, se le pedirá que repita de nuevo su respuesta.
Ejemplo 1: Lo sentimos. Su número no ha resultado premiado. ¿Desea volver a
intentarlo?
Ejemplo 2: “No hemos logrado entender su respuesta. Repítala, por favor.”


15-Mar-2023 22:46
Invitado (Alejandro Andrade)

¡Hola! Puedo ayudarte a resolver el ejercicio en Python. Aquí te dejo un posible código que resuelve el problema planteado:

import random

# Definimos una tupla con los números ganadores aleatorios
numeros_ganadores = tuple(random.randint(0, 100) for _ in range(15))

# Función para comprobar si el número introducido por el usuario es un entero positivo
def es_entero_positivo(numero):
   try:
       return int(numero) > 0
   except ValueError:
       return False

# Pedimos al usuario que introduzca un número entero positivo
while True:
   numero_usuario = input("Introduce un número entero positivo: ")
   if es_entero_positivo(numero_usuario):
       break
   print("Por favor, introduce un número entero positivo.")

numero_usuario = int(numero_usuario)

# Mostramos los números ganadores y los extremos de la lista
print("Números ganadores:", numeros_ganadores)
print("Número ganador más pequeño:", min(numeros_ganadores))
print("Número ganador más grande:", max(numeros_ganadores))

# Comprobamos si el número introducido por el usuario está en la lista de ganadores
if numero_usuario in numeros_ganadores:
   veces_repetido = numeros_ganadores.count(numero_usuario)
   premio = 15 + (veces_repetido * 5)
   mensaje = f"¡Felicidades! Su número: {numero_usuario} se encuentra dentro de la lista de ganadores"
   if veces_repetido > 1:
       mensaje += f" y se ha repetido {veces_repetido} veces"
   mensaje += f". Ha ganado un total de {premio} €."
   print(mensaje)
else:
   while True:
       respuesta = input("Lo sentimos. Su número no ha resultado premiado. ¿Desea volver a intentarlo? (SI/NO): ")
       respuesta = respuesta.upper()
       if respuesta == "SI":
           break
       elif respuesta == "NO":
           print("¡Hasta luego!")
           exit()
       else:
           print("No hemos logrado entender su respuesta. Repítala, por favor.")

Este código utiliza una tupla para almacenar los 15 números ganadores aleatorios generados con la función 'random.randint()'. Luego se define la función 'es_entero_positivo()' para comprobar si el número introducido por el usuario es un entero positivo, y se utiliza un bucle 'while' para pedirle al usuario que introduzca un número válido.

Después se muestra por pantalla la lista de números ganadores y los extremos de la lista con las funciones 'min()' y 'max()'. A continuación se comprueba si el número introducido por el usuario está en la lista de ganadores con el operador 'in'. Si está en la lista, se calcula el premio según el número de veces que se ha repetido y se muestra un mensaje de felicitación con el premio obtenido. Si no está en la lista, se le pregunta al usuario si desea volver a intentarlo, y se continúa preguntando hasta que responda "SI" o "NO".

Espero que este código te sea útil para resolver el ejercicio.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)