¡Qué bien sienta que me empiecen a salir estas cositas, por muy básicas que sean!
Me estaba preguntando si podría hacer un multi dado en el que poder elegir tanto el número de dados como el número de caras. Es una tontada, pero me ha alegrado el día.
import random
# función de cada tirada de cada dado
def tirada(caras):
sale = random.randint(1, caras)
return sale
# evitamos que explote el programa cuando meten números negativos o letras
def real_positivo(dados_caras): # dados caras sólo indica el parámetro del que hablar
while True: # bucle infinito hasta que meta un valor válido
numero = input(f'''
¿De qué número de {dados_caras} estaríamos hablando?
''')
if numero[0] == '-' and numero[1:].isdigit():
print(f'''
Cuidado, un número negativo de {dados_caras} rompería el espacio-tiempo.''')
elif numero.isdigit():
numero = int(numero)
if numero > 0:
return numero
else:
print(f'''
Poco vamos a hacer con 0 {dados_caras}''')
else:
print('''
Eso va a ser que no es un número entero positivo''')
caras, dados = 6 ,1 # establecemos por defecto 6 caras y 1 dado
while True: # bucle infinito hasta que el usuario quiera dejar de usar los dados
menu = input(f'''
M U L T I D A D O
1. Dados | 2. Caras | 3. Tirada | 4. Salir
=== Dados {dados}, caras {caras}
Elige: ''')
if menu == '1':
dados = real_positivo('dados')
print('''
=== Configurado ===''')
elif menu == '2':
caras = real_positivo('caras')
print('''
=== Configurado ===''')
elif menu == '3':
suma = 0 # arriba junto con las demás supondría reiniciarlo debajo en cada fin de 3
for cada in range(1, dados + 1):
resultado = tirada(caras)
suma = suma + resultado
print(f'''
Dado {cada} > saca {resultado}''')
print(f'''
Total de la tirada: {suma}''')
elif menu == '4':
break
else:
print('''
=== Eso no es una opción del menú ===''')