.
Solución al Ejercicio: Tirada de dados
📋 Copiar código
import random
def simular_tirada_dados(num_tiradas):
"""
Simula la tirada de un dado de seis caras un número específico de veces
y devuelve un diccionario con la frecuencia de cada cara.
Args:
num_tiradas: El número de veces que se simulará la tirada del dado (entero positivo).
Returns:
Un diccionario donde las claves son las caras del dado (1 al 6) y los valores
son la frecuencia con la que salió cada cara.
Devuelve un diccionario vacío si num_tiradas no es un entero positivo.
"""
if not isinstance(num_tiradas, int) or num_tiradas <= 0:
return {}
frecuencia_caras = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0}
for _ in range(num_tiradas):
resultado = random.randint(1, 6) # Genera un número aleatorio entre 1 y 6 (inclusive)
frecuencia_caras[resultado] += 1
return frecuencia_caras
# Ejemplo de uso
num_tiradas_1 = 1000
resultados_1 = simular_tirada_dados(num_tiradas_1)
print(f"Simulando {num_tiradas_1} tiradas de dado:")
print(f"Frecuencia de las caras: {resultados_1}")
num_tiradas_2 = 5000
resultados_2 = simular_tirada_dados(num_tiradas_2)
print(f"\nSimulando {num_tiradas_2} tiradas de dado:")
print(f"Frecuencia de las caras: {resultados_2}")
num_tiradas_invalida = -10
resultados_invalido = simular_tirada_dados(num_tiradas_invalida)
print(f"\nSimulando {num_tiradas_invalida} tiradas de dado:")
print(f"Frecuencia de las caras: {resultados_invalido}")
Explicación del Código:
-
import random
:
- Importa el módulo
random
,
que proporciona funciones para generar números aleatorios.
-
def
simular_tirada_dados(num_tiradas):
:
- Define una función llamada
simular_tirada_dados
que toma un entero (num_tiradas
)
como argumento, representando el número de veces que se simulará la
tirada del dado.
-
"""Docstring..."""
:
- La cadena de documentación explica la
función, su argumento y lo que devuelve.
-
if not isinstance(num_tiradas,
int) or num_tiradas <= 0:
:
- Se verifica si
num_tiradas
no es un entero o si no es un entero positivo. Si alguna de estas
condiciones es verdadera, la función devuelve un diccionario vacío, ya
que una simulación válida requiere un número positivo de tiradas.
-
frecuencia_caras = {1: 0, 2: 0,
3: 0, 4: 0, 5: 0, 6: 0}
:
- Se inicializa un diccionario llamado
frecuencia_caras
. Las claves son las posibles caras del
dado (del 1 al 6) y los valores se inicializan en 0. Este diccionario se
utilizará para contar cuántas veces sale cada cara.
-
for _ in range(num_tiradas):
:
- Se inicia un bucle
for
que
se ejecutará num_tiradas
veces. El guion bajo _
se utiliza como nombre de variable cuando no necesitamos usar el valor
del índice del bucle.
-
resultado = random.randint(1,
6)
:
- Dentro del bucle, se utiliza la función
random.randint(1, 6)
para generar un número entero
aleatorio entre 1 y 6 (ambos inclusive), simulando el resultado de una
tirada de un dado de seis caras.
-
frecuencia_caras[resultado] +=
1
:
- El valor de
resultado
(la
cara que salió en la tirada simulada) se utiliza como clave para acceder
al diccionario frecuencia_caras
, y su valor (la frecuencia
de esa cara) se incrementa en 1.
-
return frecuencia_caras
:
- Después de completar todas las
simulaciones, la función devuelve el diccionario
frecuencia_caras
,
que contiene la frecuencia con la que salió cada cara del dado.
-
Ejemplo de uso:
- Se definen dos números de tiradas (
num_tiradas_1
y num_tiradas_2
) para simular diferentes cantidades de
tiradas.
- Se llama a la función
simular_tirada_dados
con cada número de tiradas y los resultados
se imprimen.
- También se incluye un ejemplo con un
número de tiradas inválido para mostrar el manejo de ese caso.