Primero que todo, deberías tomar el curso de Curso de Fundamentos de Python para que tengas las nociones básicas sobre cómo crear variables y cómo crear condicionales if, elif, else y utilizar ciclos while o for.
En esta oportunidad te recomiendo que sigas paso a paso el código para que tengas una base pero si quieres agregarle algo más, tienes la libertad de hacerlo.
import random
Esa línea de código nos permite importar la librería interna que tiene Python para poder utilizar sus métodos para obtener valores aleatorios.
roundTotal = 3
options = ('piedra', 'papel', 'tijera')
scorePlayer = 0
scoreComputer = 0
En esta parte del código, te darás cuentas que se están creando las variables necesarias para que nuestro juego pueda funcionar. roundTotal, sirve para definir la cantidad de rondas que deben haber en la partida, por defecto tiene 3 rondas. options, es una tupla de opciones donde tenemos 3 elementos; los elementos necesarios para el juego. scorePlayer, es el puntaje que tiene el usuario. scoreComputer, es el puntaje que tiene la computadora. Esas dos variables se le asignan a 0, ya que es el puntaje que debería tener como valor inicial.
for round in range(1, roundTotal + 1):
En esta línea, tienes la inicialización del ciclo for para indicar el rango entre las veces que tiene que iterar para la lógica de la partida. Creamos una variable round que va a almacenar cada uno de las rondas de la partida. Además se utiliza el método range() que trae Python para indicar rangos desde un número hasta otro número, y dentro de esos parentesis “()”, se agrega desde donde va a comenzar la partida; por defecto comienza en 0 pero nosotros necesitamos que comience en 1 por eso se le indica que va a tener el primer argumento en 1 y el segundo argumento debe ser el total de rondas más 1, ya que la longitud del arreglo es de 3 pero los ídices siempre comienzan en 0, es decir, 3 - 1 = 2, y necesitamos que la ronda sea hasta 3 por eso se le suma ese valor.
ifround <= roundTotal:
Debemos preguntar si la ronda es menor o igual al total de rondas, en este caso se evalúa si 1 es menor que 3; de ser verdadero, entra en el ciclo. La ejecución seguirá así hasta que llegue al final que sería: round = 3 y evalúa si es menor o igual, en este caso son igual y todavía puede iterar el ciclo.
user_option = input('piedra, papel o tijera => ').lower()
if user_option notin options:
print('Esa opcion no existe')
Esta línea nos permite pedirle al usuario las opciones necesarias para poder jugar contra la computadora, pero también debemos evaluar si las opciones que elije el usuario son totalmente válidas y además debemos convertirlas en minúsculas toda la palabra recibida para evitar problema con la tupla de opciones que creamos.
computer_option = random.choice(options)
En esta línea permitimos que la computadora pueda elegir de forma al azar un valor entre esas 3 opciones.
if user_option == computer_option:
print('¡Empate!')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
En esta condición evaluamos si la opción que eligió el usuario concuerda con la misma que eligió la computadora y de ser verdadera, debemos decirle al usuario que hubo un empate.
elif user_option == 'piedra':
if computer_option == 'tijera':
scorePlayer += 1
print('Piedra le gana a la tijera')
print('¡User Ganó!')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
else:
scoreComputer += 1
print('Papel le gana a la piedra')
print('Computer Ganó')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
elif user_option == 'papel':
if computer_option == 'piedra':
scorePlayer += 1
print('Papel le gana a la piedra')
print('¡User Ganó!')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
else:
scoreComputer += 1
print('Tijera le gana a la papel')
print('¡Computer Ganó!')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
elif user_option == 'tijera':
if computer_option == 'papel':
scorePlayer += 1
print('Tijera le gana a la papel')
print('¡User Ganó!')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
else:
scoreComputer += 1
print('Piedra le gana a la tijera')
print('Computer Ganó')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
En estas líneas puedes ver las condiciones necesarias para ganar la partida, además tendrás mensajes por si te ganaron o ganaste y también tendremos la suma del puntaje del usuario o de la computadora, depende de quien vaya ganando.
if scorePlayer == 2and scoreComputer == 0or scoreComputer == 2and scorePlayer == 0:
break
Y por último, tenemos una pequeña condición donde vamos a evaluar si el puntaje del usuario o de la computadora es de 2 y si el contrincante tiene 0, entonces por lógica la parteda a de ser de 3, entonces, automáticamente gana el que cumpla con la condición.
import random
roundTotal = 3
options = ('piedra', 'papel', 'tijera')
scorePlayer = 0
scoreComputer = 0for round in range(1, roundTotal + 1):
if round <= roundTotal:
print(f'------ Round {round} ------')
user_option = input('piedra, papel o tijera => ').lower()
if user_option notin options:
print('Esa opcion no existe')
# random.choise(tuple) me permite elegir de forma aleatoria valores de una tuple
computer_option = random.choice(options)
if user_option == computer_option:
print('¡Empate!')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
elif user_option == 'piedra':
if computer_option == 'tijera':
scorePlayer += 1
print('Piedra le gana a la tijera')
print('¡User Ganó!')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
else:
scoreComputer += 1
print('Papel le gana a la piedra')
print('Computer Ganó')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
elif user_option == 'papel':
if computer_option == 'piedra':
scorePlayer += 1
print('Papel le gana a la piedra')
print('¡User Ganó!')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
else:
scoreComputer += 1
print('Tijera le gana a la papel')
print('¡Computer Ganó!')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
elif user_option == 'tijera':
if computer_option == 'papel':
scorePlayer += 1
print('Tijera le gana a la papel')
print('¡User Ganó!')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
else:
scoreComputer += 1
print('Piedra le gana a la tijera')
print('Computer Ganó')
print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
if scorePlayer == 2and scoreComputer == 0or scoreComputer == 2and scorePlayer == 0:
break