Python - Problema en POO (soy principiante)

 
Vista:
sin imagen de perfil

Problema en POO (soy principiante)

Publicado por Agustin (21 intervenciones) el 08/09/2014 19:43:00
Estoy empezando en python, y comencé a crear un codigo en POO, que viene a ser este:
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
import random
g = random.randint(1, 5)
class Guitarra():
    def tocar(self):
        print "Tocas la guitarra"
 
    def tocarcuerda(self):
        print "Tocas la quinta cuerda"
 
    def tocarbien(self):
        print "La guitarra suena bien"
 
    def tocarmal(self):
        print "La guitarra suena mal"
 
    def afinar(self):
        print "Afinas la guitarra"
 
gui = Guitarra()
if g < 2:
    print gui.tocar()
    print gui.tocarcuerda()
    print gui.tocarbien()
else:
    print gui.tocar()
    print gui.tocarmal()
    print gui.afinar()
    print gui.tocar()
    print gui.tocarbien()

Pero al ejecutarlo me aparece esto:
Tocas la guitarra
None
La guitarra suena mal
None
Afinas la guitarra
None
Tocas la guitarra
None
La guitarra suena bien
None

Cuando sale que la guitarra suena bien hace lo mismo, aparece un None despues de cada mensaje.
Que tengo que hacer?
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
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

Problema en POO (soy principiante)

Publicado por xve (1646 intervenciones) el 08/09/2014 21:18:20
Hola Agustin, cuando llamas a las funciones, estas esperando que te devuelva algun valor para poder imprimirlo
1
print gui.tocar()

Pero la función tocar() no devuelve nada, solo imprime, por lo que simplemente llama a las funciones, sin el print.
1
gui.tocar()


Si quiere utilizar el print en la llamada a las funciones, entonces en las funciones en vez de hacer un print, tienes que devolver los valores con return, algo así:
1
2
def tocar(self):
    return "Tocas la guitarra"
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

Problema en POO (soy principiante)

Publicado por Agustin (21 intervenciones) el 08/09/2014 21:44:31
A funcionado, muchisimas gracias, estoy aprendiendo y me está costando un poco ya que es el primer lenguaje que aprendo
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

Problema en POO (soy principiante)

Publicado por xve (1646 intervenciones) el 09/09/2014 07:57:33
Has elegido un buen lenguaje Agustin!!!
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

Problema en POO (soy principiante)

Publicado por Agustin (21 intervenciones) el 09/09/2014 14:12:36
Gracias!!, tengo otro problema, aunque no sé si es otro problema en si, mira el codigo
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
import random
c = random.randint(1, 3)
class Vehiculo():
    litros = 5
    def coche(self):
        return "Has montado en el coche"
 
    def bici(self):
        return "Has montado en la bici"
 
    def moto(self):
        print "Has montado en la moto"
 
    def conducir(self):
        el_coche = coche()
        la_bici = bici()
        la_moto = moto()
        litros = 5
        while c == 3:
            litros -= 1
            el_coche
            print "Quedan", litros, "litros de gasolina"
            if litros == 0:
                print "No queda gasolina, el coche no se mueve"
                print "Puedes montar en bici o en moto"
                elegir = raw_input("Elige el vehiculo: ")
                if elegir == bici:
                    la_bici
                elif elegir == moto:
                    la_moto
        while c == 2:
            la_bici
            print "Eres deportista y no paras de andar en la bici"
            print "y no te cansas hasta muy tarde. Al dia siguiente coges o el coche o la moto"""
            elegir1 = raw_input("Que escoges: ")
            while elegir1 == coche:
                litros -= 1
                el_coche
                print "Quedan", litros, "litros de gasolina"
                while litros == 0:
                    print "No queda gasolina, el coche no se mueve"
                    la_moto
                    print "Quedan", litros, "litros de gasolina"
                    if litros == 0:
                        print "No queda gasolina, la moto no se mueve"
 
 
 
 
vehi = Vehiculo()
vehi.conducir()
vehi.coche()
vehi.bici

Me gustaría que me ayudaras a "optimizar" el codigo de alguna manera, para hacerlo un poco más sencillo, tampoco consigo usar las funciones coche() bici() y moto() ya que cuando las llamo en la función conducir() al ejecutar el código
me dice (depende de cual sea, digamos coche()) que el nombre coche() no está definido o algo así.
Esto es lo que sale:
1
2
3
4
5
File "C:/Users/Pollastre/PycharmProjects/prueba/prueba4.py", line 51, in <module>
    vehi.conducir()
  File "C:/Users/Pollastre/PycharmProjects/prueba/prueba4.py", line 15, in conducir
    el_coche = coche()
NameError: global name 'coche' is not defined


PD: EL CÓDIGO NO ESTÁ COMPLETO
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