Batalla naval, ej 13, rarísimo!


#1



https://www.codecademy.com/es/courses/python-beginner-en-7s5jh/1/4?curriculum_id=53a32847fed2a88075000001


Me dice como error que NO he creado el elif con "Ya dijiste esa.", pero en realidad si lo hice, y funciona.


import random

tablero = []

for x in range(0,5):
  tablero.append(["O"] * 5)

def print_tablero(tablero):
  for fila in tablero:
    print " ".join(fila)

print_tablero(tablero)

def fila_aleatoria(tablero):
  return random.randint(0,len(tablero)-1)

def columna_aleatoria(tablero):
    return random.randint(0,len(tablero[0])-1)

barco_fila = fila_aleatoria(tablero)
barco_columna = columna_aleatoria(tablero)
adivina_fila = input("Adivina fila:")
adivina_columna = input("Adivina columna:")

print barco_fila
print barco_columna

# escribí tu código a continuación.

if adivina_fila == barco_fila or adivina_columna == barco_columna:
    print("Felicitaciones, Hundiste mi barco!")
elif tablero[adivina_fila][adivina_columna] == "X":
    print ("Ya dijiste esa")
elif adivina_fila not in range(5) or adivina_columna not in range(5):
    print("Huy, eso ni siquiera esta en el oceano")
else:
    tablero[adivina_fila][adivina_columna] = "X"
    print("Agua, no tocaste mi barco")


#2

Reverse these two elif's so the range is tested first.

Revertir estas dos elif de lo que el rango se probó por primera vez.


#3

muchas gracias!! y sabrás por qué en este codigo me indica que NO pongo "final del juego"?

import random

tablero = []

for x in range(0,5):
tablero.append(["O"] * 5)

def print_tablero(tablero):
for fila in tablero:
print " ".join(fila)

print "Juguemos as la batalla naval!"
print_tablero(tablero)

def fila_aleatoria(tablero):
return random.randint(0,len(tablero)-1)

def columna_aleatoria(tablero):
return random.randint(0,len(tablero[0])-1)

barco_fila = fila_aleatoria(tablero)
barco_columna = columna_aleatoria(tablero)
print barco_fila
print barco_columna

for turno in range(4):
adivina_fila = input("Adivina fila: ")
adivina_columna = input("Adivina columna: ")

if adivina_fila == barco_fila and adivina_columna == barco_columna:
    print "Felicitaciones! Hundiste mi barco!"
    print "fin del juego"
    break
else:
    if (adivina_fila < 0 or adivina_fila > 4) or (adivina_columna < 0 or adivina_columna > 4):
        print "Huy, eso ni siquiera esta en el oceano."
    elif(tablero[adivina_fila][adivina_columna] == "X"):
        print "Ya dijiste esa."
    else:
        print "No tocaste mi barco"
      tablero[adivina_fila][adivina_columna] = "X"
      turno = turno +1
  if turno == 4:
      print "fin del juego"

print_tablero(tablero)


#4

Change 4 to 3? Remember, range() starts at 0.

Cambio 4 a 3? Recuerde, range() comienza a 0.