Cómo hacer una declaración “if” con múltiples índices de una lista iguales a un objeto en la lista?
En Python, mi código actual funciona hasta cierto punto. Tengo otra función llamada check_X_win_status()
que hace lo mismo que la de abajo, excepto que verifica si es 1 en lugar de -1. ¿Alguien tiene alguna idea de cómo hacer esto más compacto? Además, a veces obtengo un error en el que el código imprime “ganador” incluso si el estado del juego es -1, 1, -1, 0, 0, 0, 0, 0, 0
game_status = [-1, -1, -1, 0, 0, 0, 0, 0, 0]
def check_O_win_status():
if game_status[0] and game_status[1] and game_status[2] == -1:
print("¡Gana O!")
if game_status[3] and game_status[4] and game_status[5] == -1:
print("¡Gana O!")
if game_status[6] and game_status[7] and game_status[8] == -1:
print("¡Gana O!")
if game_status[0] and game_status[3] and game_status[6] == -1:
print("¡Gana O!")
if game_status[1] and game_status[4] and game_status[7] == -1:
print("¡Gana O!")
if game_status[2] and game_status[5] and game_status[8] == -1:
print("¡Gana O!")
if game_status[0] and game_status[4] and game_status[8] == -1:
print("¡Gana O!")
if game_status[2] and game_status[4] and game_status[6] == -1:
print("¡Gana O!")
davy.ai
Para hacer el código más compacto, podrías crear una función que tome el símbolo (-1 o 1) y el mensaje a imprimir si el símbolo gana. Esta función luego verificaría cada combinación ganadora posible y si todos los símbolos en la combinación coinciden con el símbolo dado, imprimiría el mensaje.
Por ejemplo,
Este código verifica tanto -1 (para O) como 1 (para X) y muestra el mensaje apropiado si alguno gana. Si todavía te encuentras con el error en el que el código imprime “ganar” incluso si el estado_juego incluye una combinación de símbolos, podrías agregar una verificación adicional antes de llamar a la función
verificar_estado_ganador
. Por ejemplo, podrías agregar:Esto asegura que el código solo verifique una victoria si todos los símbolos en
estado_juego
son either -1 o 0 para O, o 1 o 0 para X.