Ayuda en este código
Publicado por Javier (2 intervenciones) el 11/04/2015 15:24:51
Hola buenas, estoy empezando en python y decidí hacer un 3 en raya con la consola, conseguí hacer el código de abajo, pero me da 2 errores, el primero de ellos, linea 89 File "C:/Users/javier/Desktop/3rayao.py", line 91, in <module>
while not decidir_ganador(tablero): no sé ni que me quiere decir y el segundo File "C:/Users/javier/Desktop/3rayao.py", line 27, in decidir_ganador
if table[terna[0]] == table[terna[1]] == table[terna[3]] != " ":
IndexError: tuple index out of range no sé soluccionarlo. os dejo el código aquí abajo. Gracias de antemano por la ayuda. Creo que las tabulaciones no se han copiado, pero estan bien puestas...
while not decidir_ganador(tablero): no sé ni que me quiere decir y el segundo File "C:/Users/javier/Desktop/3rayao.py", line 27, in decidir_ganador
if table[terna[0]] == table[terna[1]] == table[terna[3]] != " ":
IndexError: tuple index out of range no sé soluccionarlo. os dejo el código aquí abajo. Gracias de antemano por la ayuda. Creo que las tabulaciones no se han copiado, pero estan bien puestas...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
################VARIABLES##############
ordenador = "O"
jugador = "X"
empate = "T"
turno = "X"
tablero = []
#################FUNCIONES#################
def pedir_numero(pregunta, minimo, maximo):
respuesta = None
while respuesta not in range(minimo, maximo):
respuesta = int(input(pregunta))
return respuesta
def mostrar_tablero():
print("\n\t",tablero[0], "|" , tablero[1], "|", tablero[2])
print("\t", "---------")
print("\t",tablero[3], "|" , tablero[4], "|", tablero[5])
print("\t", "---------")
print("\t",tablero[6], "|" , tablero[7], "|", tablero[8], "\n")
def decidir_ganador(table):
Formas_De_Ganar = ((0, 1, 2),(3, 4, 5),(6, 7, 8),(0, 3, 6),(1, 4, 7),(2, 5, 8),(0, 4, 8),(2, 4, 6))
for terna in Formas_De_Ganar:
if table[terna[0]] == table[terna[1]] == table[terna[3]] != " ":
vence = table[terna[0]]
return vence
if " " not in table:
return empate
return None
def movimientos_permitidos(table):
movper = []
for i in range(9):
if table[i] == " ":
movper.append(i)
return movper
def jugador_mueve():
legal = movimientos_permitidos(tablero)
mov = None
while mov not in legal:
mov = pedir_numero("Elige una posicion ( 0-8):", 0 ,9)
if mov not in legal:
print("\nEsa esta ocupada. Elige otra.\n")
print("Bien...")
return mov
def ordenador_mueve():
copiatablero = tablero[:]
Mejores_Movimientos = (4, 0, 2, 6, 8, 1, 3, 5, 7)
print("Elegiré la posición número: ", end=" ")
for mov in movimientos_permitidos(copiatablero):
copiatablero[mov] = ordenador
if decidir_ganador(copiatablero) == ordenador:
print(mov)
return mov
copiatablero[mov] = " "
for mov in movimientos_permitidos(copiatablero):
copiatablero[mov] = jugador
if decidir_ganador(copiatablero) == jugador:
print(mov)
return mov
copiatablero[mov] = " "
for mov in Mejores_Movimientos:
if mov in movimientos_permitidos(copiatablero):
print(mov)
return mov
##############PROGRAMA###################
print("""
Bienvenido al 3 en raya.
0 | 1 | 2
---------
3 | 4 | 5
---------
6 | 7 | 8
Para realizar un movimiento tendras que introducir un numero del 0 al 8
Correspondiendo a una de las posiciones del tablero de arriba.
""")
for i in range(9):
tablero.append(" ")
mostrar_tablero()
while not decidir_ganador(tablero):
if turno == jugador_mueve():
tablero[movimiento] = jugador
else:
movimiento = ordenador_mueve()
tablero[movimiento] = ordenador
mostrar_tablero()
if turno == jugador:
turno = ordenador
else:
turno = jugador
ganador = decidir_ganador(tablero)
if ganador == ordenador:
print("Gané pringao")
elif ganador == jugador:
print("GANASTE PUTO")
else:
print("tablas tete, me aburro")
input("\n\nPulsa enter para salir")
Valora esta pregunta


1