Batalla naval! Peligro, Will Robinson!


#1




Me salta este mensaje de error:
"¡Uy! Probá otra vez. Parece que tu juego no muestra '¡No impactaste mi barco!' cuando el jugador no adivina. "
Pero el codigo se ejecuta perfectamente. el mensaje '¡No impactaste mi barco!' lo copie y pegue exactamente como lo pide la pagina. Ya lo puse en español y en ingles y nada.

Que deberia hacer? hay alguna forma correcta de escribirlo o esta bugeado?
Les dejo mi codigo. Muchas gracias!
PD: Tuve que ponerle esas "u" antes de los mensajes por la codificacion, podria ser eso?


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_col = columna_aleatoria(tablero)
adivina_fila = input("Adivina fila:")
adivina_columna = input("Adivina columna:")

if barco_fila == adivina_fila and barco_col == adivina_col:
    print u"¡Felicitaciones! ¡Hundiste mi barco!"
else:
    tablero[adivina_fila][adivina_columna]="X"
    print_tablero(tablero)
    print u"¡No impactaste mi barco!"    

print barco_fila
print barco_col


#2

Tienes demasiado línea dentada aquí.

Aparte de eso, está bien,


#3

Es cierto lo del espacio de más, pero además en la condición del if hay un error:
Cuando lo corregí anduvo sin problemas, las "u" en el print no son necesarias.

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

if barco_fila == adivina_fila and barco_col == adivina_columna: #tenías "adivina_col"
    print u"¡Felicitaciones! ¡Hundiste mi barco!"
else:
    tablero[adivina_fila][adivina_columna]="X"
    print_tablero(tablero)
    print u"¡No impactaste mi barco!"

#4

lo de adivina_col fue un error de copy paste pero en el codigo de codecademy lo tengo bien.
el codigo me funciona y hace lo que deberia hacer pero me salta el error
"¡Uy! Probá otra vez. Parece que tu juego no muestra '¡No impactaste mi barco!' cuando el jugador no adivina." y no me lo da como correcto.
Cuando no le pongo las u en el print me tira el siguiente error

Traceback (most recent call last):
File "python", line 30, in
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)


#5

A veces se pone quisquilloso porque uno no escribe el código exactamente como lo piden. Lo cual no quiere decir que tu código esté mal, pero bueno.
Se me ocurre que podrías probar dejarlo tal cual lo pide, cambiando el orden de algunas líneas (igual me parece algo tonto porque te hace dudar de tu código, cuando no debería ser así, pero tratemos de encontrar el problema!).

Yo puse el print barco_fila y print barco_col (tus últimas dos líneas) justo antes del if.
Y en la parte del else, en este orden:

print "¡No impactaste mi barco!" 
tablero[adivina_fila][adivina_columna]="X"
print_tablero(tablero)

Ahora que revisé las instrucciones, sí lo pide en ese orden... :rolling_eyes:


#6

cambie el orden y seguia tirando el mismo error, reinicie el codigo y lo volvi a hacer exactamente igual, cambie la indentacion esa que estaba de mas y lo tomo por valido al ejercicio. Raro igual, por que ya habia hecho todo eso y seguia tirando el error, y encima ahora el codigo no funciona por que tira error de unicode pero bueno. Gracias por la ayuda!


#7

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.