elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Batalla naval Python!!! [RESUELTO]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Batalla naval Python!!! [RESUELTO]  (Leído 16,437 veces)
Joe Fraddy

Desconectado Desconectado

Mensajes: 277


Ver Perfil
Batalla naval Python!!! [RESUELTO]
« en: 28 Enero 2015, 18:54 pm »

Hola amigos, ahora estoy en un ejercicio de elaborar un juego llamado batalla naval, y no he entendido lo que se me pide hacer (se supone que vamos haciendo el código paso a paso).

Las instrucciones son estas:

Citar
01. Agregá una sentencia elif que verifique si la ubicación ya tiene una 'X'.
02. Si la tiene, mostrá "Ya dijiste esa."

Este es mi código:

Código:
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:
    print "Felicitaciones, Hundiste mi barco!"
else:
    print "Agua, no tocaste mi barco"
    if adivina_fila not in range(5) or adivina_columna not in range(5):
        print "Huy, eso ni siquiera esta en el oceano"
    else:
        print "Aquí no ha pasado nada"
elif  board[adivina_fila][adivina_columna] == 'X':
    print "Ya dijiste esa"

Parece que lo que esta mal es la última parte:

Código:
elif  board[adivina_fila][adivina_columna] == 'X':
    print "Ya dijiste esa"

El error del interprete es:

Código:
  File "python", line 37
    elif  board[adivina_fila][adivina_columna] == 'X':
       ^
SyntaxError: invalid syntax


« Última modificación: 5 Febrero 2015, 16:25 pm por Joe Fraddy » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Batalla naval Python!!!
« Respuesta #1 en: 28 Enero 2015, 19:30 pm »

la sintaxis está mala, primero debe ir elif que else...

es decir... lo tuyo se interpreta algo como

el compilador llega al primer if y lo salta porque no cumple, como hay else ejecuta automáticamente eso... luego se consigue con un elif que no pertenece a nadie porque no hay condiciones if sin resolverse

el doeen siempre debe ser IF -> [ELIF ]-> [ELSE]


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Joe Fraddy

Desconectado Desconectado

Mensajes: 277


Ver Perfil
Re: Batalla naval Python!!!
« Respuesta #2 en: 28 Enero 2015, 20:40 pm »

Si, ya me había percatado de eso, y he reacomodado el código:

Código:
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

if adivina_fila == barco_fila:
    print "Felicitaciones, Hundiste mi barco!"

# Codigo reacomodado
elif  board[adivina_fila][adivina_columna] == 'X':
    print "Ya dijiste esa"

else:
    print "Agua, no tocaste mi barco"
    if adivina_fila not in range(5) or adivina_columna not in range(5):
        print "Huy, eso ni siquiera esta en el oceano"
    else:
        print "Aquí no ha pasado nada"

pero creo que tengo problemas con el módulo, eso es lo que me dice el interprete:

Citar
Traceback (most recent call last):
  File "python", line 31, in <module>
NameError: name 'board' is not defined
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: Batalla naval Python!!!
« Respuesta #3 en: 28 Enero 2015, 20:59 pm »

Citar
pero creo que tengo problemas con el módulo, eso es lo que me dice el interprete:

Citar
Traceback (most recent call last):
  File "python", line 31, in <module>
NameError: name 'board' is not defined

El error se está explicando por si mismo. No existe ningún miembro deifnido en el código con el nombre 'board', quizás quisiste decir 'tablero', que es como se llama tu lista:

Código
  1. import random
  2.  
  3. tablero = []
  4.  
  5. ...

Saludos.
« Última modificación: 28 Enero 2015, 21:01 pm por Eleкtro » En línea

Joe Fraddy

Desconectado Desconectado

Mensajes: 277


Ver Perfil
Re: Batalla naval Python!!!
« Respuesta #4 en: 28 Enero 2015, 21:14 pm »

Si, efectivamente tenia que poner tablero, en vez de board, pensé que board era alguna función de random.

Pero ahora creo que hay un problema de conversión, que no logro entender, el depurador me saca esto:

Código:
Traceback (most recent call last):
  File "python", line 38, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 3: ordinal not in range(128)
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: Batalla naval Python!!!
« Respuesta #5 en: 28 Enero 2015, 21:24 pm »

Algo relacionado con problemas de codificación y su solución ya se te explicó aquí:
Problema en python [alguno me ayuda??

vuelve a leer atentamente :P

Pero en esta ocasión el error parece tener que ver con la codificación de la shell (no como en la otra pregunta), prueba así

Código
  1. # encoding=utf8  
  2. import sys  
  3.  
  4. reload(sys)  
  5. sys.setdefaultencoding('utf8')

saludos
En línea

Joe Fraddy

Desconectado Desconectado

Mensajes: 277


Ver Perfil
Re: Batalla naval Python!!!
« Respuesta #6 en: 28 Enero 2015, 21:50 pm »

No parece que ese no es problema, me manda un error al correrlo:

Citar
Unknown Error: O O O O O
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Batalla naval Python!!!
« Respuesta #7 en: 28 Enero 2015, 23:01 pm »

aprende a usar un debugger :P

http://www.pythontutor.com/visualize.html

más fácil que eso no hay jejeje

ahí deberias ver las fallas de codigo mejor que nada
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Joe Fraddy

Desconectado Desconectado

Mensajes: 277


Ver Perfil
Re: Batalla naval Python!!!
« Respuesta #8 en: 28 Enero 2015, 23:10 pm »

aprende a usar un debugger :P

http://www.pythontutor.com/visualize.html

más fácil que eso no hay jejeje

ahí deberias ver las fallas de codigo mejor que nada

Es que el problema es que este es un interprete html y creo que no va con el código real, lo que hago son ejercicios, que a veces esta bien, pero simplemente no corren porque esta hecho en web
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Batalla naval Python!!!
« Respuesta #9 en: 28 Enero 2015, 23:26 pm »

para tu ejercicio corre bien ;)

y hasta ahora los codigos que he probado funcionan :P

intentalo
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Expresiones regulares --->(Python)[Resuelto]
Scripting
¨°o.O (ßa¢Kg|姧) O.o° 2 4,632 Último mensaje 29 Marzo 2010, 02:21 am
por Novlucker
Colores bash en python (RESUELTO)
Scripting
carlos.foroelhaker 2 2,928 Último mensaje 4 Mayo 2012, 19:41 pm
por carlos.foroelhaker
[Resuelto] input de Python en C++?
Programación C/C++
Br1ant 7 3,917 Último mensaje 28 Junio 2015, 19:31 pm
por Br1ant
Problema con comentar bloques en Python 3 (Resuelto)
Scripting
lucas25cba 4 4,129 Último mensaje 28 Octubre 2015, 14:59 pm
por Pablo Videla
Problema con Python y SSL [RESUELTO]
Scripting
NikNitro! 3 4,833 Último mensaje 5 Julio 2017, 22:59 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines