if... elif... else... - Minijuegos(1) - Soluciones

Se ofrecen a continuación unas posibles soluciones de los ejercicios de if ... elif ... else ... Minijuegos (1).

Minijuegos (1) - 1

import random


def main():
    print("JUEGO DE DADOS (1)")

    a = random.randrange(1, 7)
    b = random.randrange(1, 7)

    print(f"Alberto ha sacado un {a}.")
    print(f"Bárbara ha sacado un {b}.")

    if a == b:
        print("Han empatado.")
    elif a > b:
        print("Ha ganado Alberto.")
    else:
        print("Ha ganado Bárbara.")


if __name__ == "__main__":
    main()

Minijuegos (1) - 2

import random


def main():
    print("JUEGO DE DADOS (2)")

    a_1 = random.randrange(1, 7)
    a_2 = random.randrange(1, 7)
    b_1 = random.randrange(1, 7)
    b_2 = random.randrange(1, 7)
    max_a = max(a_1, a_2)
    max_b = max(b_1, b_2)

    print(f"Carmen ha sacado un {a_1} y un {a_2}.")
    print(f"David ha sacado un {b_1} y un {b_2}.")

    if a_1 + a_2 > b_1 + b_2:
        print("Ha ganado Carmen.")
    elif a_1 + a_2 < b_1 + b_2:
        print("Ha ganado David.")
    else:
        if max_a > max_b:
            print("Ha ganado Carmen.")
        elif max_a < max_b:
            print("Ha ganado David.")
        else:
            print("Han empatado.")


if __name__ == "__main__":
    main()

En vez de if ... else ... anidados se podía haber utilizado un único if ... elif ... else ...

import random


def main():
    print("JUEGO DE DADOS (2)")

    a_1 = random.randrange(1, 7)
    a_2 = random.randrange(1, 7)
    b_1 = random.randrange(1, 7)
    b_2 = random.randrange(1, 7)
    max_a = max(a_1, a_2)
    max_b = max(b_1, b_2)

    print(f"Carmen ha sacado un {a_1} y un {a_2}.")
    print(f"David ha sacado un {b_1} y un {b_2}.")

    if a_1 + a_2 > b_1 + b_2:
        print("Ha ganado Carmen.")
    elif a_1 + a_2 < b_1 + b_2:
        print("Ha ganado David.")
    elif max_a > max_b:
        print("Ha ganado Carmen.")
    elif max_a < max_b:
        print("Ha ganado David.")
    else:
        print("Han empatado.")


if __name__ == "__main__":
    main()

Minijuegos (1) - 3

import random


def main():
    print("JUEGO DE DADOS (3)")

    a_1 = random.randrange(1, 7)
    a_2 = random.randrange(1, 7)
    b_1 = random.randrange(1, 7)
    b_2 = random.randrange(1, 7)
    max_a = max(a_1, a_2)
    max_b = max(b_1, b_2)
    min_a = min(a_1, a_2)
    min_b = min(b_1, b_2)

    print(f"Elena ha sacado un {a_1} y un {a_2}.")
    print(f"Fernando ha sacado un {b_1} y un {b_2}.")

    if max_a > max_b:
        print("Ha ganado Elena.")
    elif max_a < max_b:
        print("Ha ganado Fernando.")
    else:
        if min_a > min_b:
            print("Ha ganado Elena.")
        elif min_a < min_b:
            print("Ha ganado Fernando.")
        else:
            print("Han empatado.")


if __name__ == "__main__":
    main()

Minijuegos (1) - 4

En este ejercicio los casos se pueden ordenar de muchas distintas. Una posibilidad es la siguiente:

import random


def main():
    print("JUEGO DEL QUINCE")

    g_1 = random.randrange(1, 11)
    g_2 = random.randrange(1, 11)
    g_3 = random.randrange(1, 11)
    h_1 = random.randrange(1, 11)
    h_2 = random.randrange(1, 11)
    h_3 = random.randrange(1, 11)
    g = g_1 + g_2 + g_3
    h = h_1 + h_2 + h_3

    print(f"Gloria ha sacado un {g_1}, un {g_2} y un {g_3}.")
    print(f"Héctor ha sacado un {h_1}, un {h_2} y un {h_3}.")

    if g > 15 and h > 15:
        print("No ha ganado nadie.")
    elif g == h:
        print("Han empatado.")
    elif h > 15:
        print("Ha ganado Gloria.")
    elif g <= 15 and g > h:
        print("Ha ganado Gloria.")
    else:
        print("Ha ganado Héctor.")


if __name__ == "__main__":
    main()

Minijuegos (1) - 5

import random


def main():
  print("PIEDRA, PAPEL, ... ¡TIJERA!")

  i = random.randrange(1, 4)
  j = random.randrange(1, 4)

  print("Inés ha sacado ", end="")
  if i == 1:
      print ("piedra.")
  elif i == 2:
      print ("papel.")
  else:
      print("tijera.")
  print("Juan ha sacado ", end="")
  if j == 1:
      print ("piedra.")
  elif j == 2:
      print ("papel.")
  else:
      print("tijera.")


  if i == j:
      print("Han empatado.")
  elif i == 1 and j == 3:
      print("Ha ganado Inés.")
  elif i == 2 and j == 1:
      print("Ha ganado Inés.")
  elif i == 3 and j == 2:
      print("Ha ganado Inés.")
  else:
      print("Ha ganado Juan.")


if __name__ == "__main__":
    main()

La siguiente solución utiliza palabras en vez de número. Aunque es correcta, actualmente no se puede comprobar con MPTC.

import random


def main():
    print("PIEDRA, PAPEL, ... ¡TIJERA!")

    i = random.choice(["PIEDRA", "PAPEL", "TIJERA"])
    j = random.choice(["PIEDRA", "PAPEL", "TIJERA"])

    print(f"Inés ha sacado {i}.")
    print(f"Juan ha sacado {j}.")

    if i == j:
        print("Han empatado.")
    elif i == "PIEDRA" and j == "TIJERA":
        print("Ha ganado Inés.")
    elif i == "TIJERA" and j == "PAPEL":
        print("Ha ganado Inés.")
    elif i == "PAPEL" and j == "PIEDRA":
        print("Ha ganado Inés.")
    else:
        print("Ha ganado Juan.")


if __name__ == "__main__":
    main()