Python - Ayuda con python. Invalid syntax.

 
Vista:
sin imagen de perfil

Ayuda con python. Invalid syntax.

Publicado por Antonio (4 intervenciones) el 21/09/2014 09:04:44
Hola a todos, soy nuevísimo en python y estoy llevando a cabo un proyecto. La cosa es que me aparece el siguiente error y no se como solucionarlo:

Error_python

Os dejo lo que llevo de linea de código:

---------------------------------------------------------------------------------------
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
from random import randint
# --- Definiciones ---
def Ataque():
    """Funcion que muestra el menu de ataque"""
    print ("""--------------------
Que vas a hacer
--------------------
1) Atacar
2) Cubrir
3) Usar pocion HP""")
def PrimerEnemigo_Muerto():
    """Funcion que sigue la historia"""
    print ("El primer enemigo a muerto, ahora solo queda uno")
    Ataque()
# ---- Datos del juego ---
vida_inicial=500
vida_enemigo1=50
vida_enemigo2=50
pocion_hp=1
rand_pocion=randint(0,101)
rand_pocionHP=randint(0,101)
rand_ataque_enemigo1=randint(30,101)
rand_ataqueVS_enemigo=randint(0,101)
rand_ataque_resVS_enemigo=randint(0,101)
rand_respuesta_enemigo1(randint(40,101)
# --- Juego ---
print ("Esta historia comienza cuando Thor, nuestro protagonista, corre a salvar a su querida. En el camino dos enviados del bando enemigo aparecen...")
Ataque()
opcion1=input()
    if opcion1==1:
        print ("Enfundas tu espada y atacas al hombre fuerte que te mira con ganas de sangre")
        vida_enemigo1-rand_ataque_enemigo1=vida_enemigo1_2
        if vida_enemigo1_2<=0:
            PrimerEnemigo_Muerto()
        if vida_enemigo1_2>=1:
            print ("El enemigo ataca, y quita ", rand_ataqueVS_enemigo, " HP")
            vida2=vida_inicial-rand_ataqueVS_enemigo
            print ("Dolorido por el golpe, clavas tu espada en su pecho")
            PrimerEnemigo_Muerto()
    if opcion1==2:
        print ("Observas que se avecina un golpe y te cubres con el escudo. Ahora tu respuesta sera mas letal")
        vida_enemigo1-rand_respuesta_enemigo1=vida_enemigo1_2_1
        if vida_enemigo1_2_1<=0:
            PrimerEnemigo_Muerto()
        if vida_enemigo1_2_1>=1:
            print ("El enemigo se movio en el momento justo y ahora te ataca. Te quitan ", rand_ataque_resVS_enemigo, " HP")
            vida2=vida_inicial-rand_ataque_resVS_enemigo
            print ("Dolorido por el golpe, clavas tu espada en su pecho")
            PrimerEnemigo_Muerto()
    if opcion==3:
        print ("Tomas la pocion que guardabas en la mochila y recuperas ", rand_pocion, " HP, por desgracia ya no te quedan mas pociones")
        Ataque()
        opcion1=input()
---------------------------------------------------------------------------------------

La verdad es que estoy algo frustrado porque no se como solucionarlo. Gracias a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con python. Invalid syntax.

Publicado por Agustin (21 intervenciones) el 21/09/2014 11:24:36
Esto ocurre porque el texto ocupa dos lineas, y para que funciona en vez de usar los "bla bla" utilices tres comillas, yal que así.

1
print """Esta historia comienza cuando Thor, nuestro protagonista, corre a salvar a su querida. En el camino dos enviados del bando enemigo aparecen..."""

También te recomiendo que quites los paréntesis en los print
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con python. Invalid syntax.

Publicado por Antonio (4 intervenciones) el 21/09/2014 14:04:35
La verdad es que en mi linea de código es una sola línea. Aun así, he añadido las tres comillas pero me sigue dando el mismo error. ¿Alguna otra solución?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con python. Invalid syntax.

Publicado por anonymous (84 intervenciones) el 21/09/2014 17:12:17
Al código no se le entiende mucho, y no se si se trate de una variable,pero en la parte:

1
rand_respuesta_enemigo1(randint(40,101)

No veo el signo: =

Debería ser así

1
rand_respuesta_enemigo1=randint(40,101)

En caso de que se trate de una función, debería ser asi:

1
rand_respuesta_enemigo1(randint(40,101))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con python. Invalid syntax.

Publicado por Antonio (4 intervenciones) el 22/09/2014 17:29:31
Me faltaba el =, aun asi ya lo puse pero me sigue saltando el mismo error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con python. Invalid syntax.

Publicado por xve (1646 intervenciones) el 21/09/2014 19:15:32
Puede ser que el código sea de Python 3.x y lo estes ejecutando con Python 2.x?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda con python. Invalid syntax.

Publicado por Antonio (4 intervenciones) el 22/09/2014 17:30:35
No, tengo el python 3.4
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con python. Invalid syntax.

Publicado por xve (1646 intervenciones) el 22/09/2014 18:35:03
Antonio, te falta cerrar el parentesis en la instrucción que hay en la linea superior:
1
rand_respuesta_enemigo1(randint(40,101)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con python. Invalid syntax.

Publicado por Agustin (21 intervenciones) el 23/09/2014 00:10:19
He modificado un poco el código, y creo que ya está bien, había unos cuantos fallos en las funciones porque faltaban los tabs, algún que otro error en los "=" (que estaban al reves algunos) y otras modificaciones pequeñas.

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
from random import randint
# --- Definiciones ---
def Ataque():
    """Funcion que muestra el menu de ataque"""
    print ("""--------------------
    Que vas a hacer
    --------------------
    1) Atacar
    2) Cubrir
    3) Usar pocion HP""")
def PrimerEnemigo_Muerto():
    """Funcion que sigue la historia"""
    print ("El primer enemigo a muerto, ahora solo queda uno")
    Ataque()
    # ---- Datos del juego ---
    vida_inicia = 500
    vida_enemigo1 = 50
    vida_enemigo2 = 50
    pocion_hp = 1
    rand_pocion = randint(0 , 101)
    rand_pocionHP = randint(0 , 101)
    rand_ataque_enemigo1 = randint(30 , 101)
    rand_ataqueVS_enemigo = randint(0 , 101)
    rand_ataque_resVS_enemigo = randint(0 , 101)
    rand_respuesta_enemigo1 = randint(40 , 101)
    # --- Juego ---
    print ("Esta historia comienza cuando Thor, nuestro protagonista, corre a salvar a su querida. En el camino dos enviados del bando enemigo aparecen...")
    Ataque()
    opcion1 = input("Elige: ")
    if opcion1 == 1:
        print "Enfundas tu espada y atacas al hombre fuerte que te mira con ganas de sangre"
        vida_enemigo1_2 = vida_enemigo1 - rand_ataque_enemigo1
        if vida_enemigo1_2 <= 0:
            PrimerEnemigo_Muerto()
        if vida_enemigo1_2 >= 1:
            print ("El enemigo ataca, y quita ", rand_ataqueVS_enemigo, " HP")
            vida2 = vida_inicial-rand_ataqueVS_enemigo
            print ("Dolorido por el golpe, clavas tu espada en su pecho")
            PrimerEnemigo_Muerto()
    if opcion1 == 2:
        print ("Observas que se avecina un golpe y te cubres con el escudo. Ahora tu respuesta sera mas letal")
        vida_enemigo1_2_1 = vida_enemigo1 - rand_respuesta_enemigo1
        if vida_enemigo1_2_1 <= 0:
            PrimerEnemigo_Muerto()
        if vida_enemigo1_2_1 >= 1:
            print ("El enemigo se movio en el momento justo y ahora te ataca. Te quitan ", rand_ataque_resVS_enemigo, " HP")
            vida2 = vida_inicial - rand_ataque_resVS_enemigo
            print ("Dolorido por el golpe, clavas tu espada en su pecho")
            PrimerEnemigo_Muerto()
    if opcion == 3:
        print ("Tomas la pocion que guardabas en la mochila y recuperas ", rand_pocion, " HP, por desgracia ya no te quedan mas pociones")
        Ataque()
        opcion1 = input()
 
Ataque()
PrimerEnemigo_Muerto()
raw_input()

No descarto que en la ejecución haya fallos, ya que al código le faltan unas cuantas lineas para que no de algún que otro fallo puntual.
También te recomiendo que hay ciertas partes en la segunda función que se podrían separar en otras funciones, para que el código funcione mejor.

PD: Es una recomendación, pero cuando declares funciones sus nombre mejor en minúsculas y con guiones bajos, tal que así.
1
2
3
4
def ataque():
    pass
def primer_enemigo_muerto():
    pass
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar