Texto sencillo. La compilación no funciona. ¿Qué ocurre?

Texto sencillo. La compilación no funciona. ¿Qué ocurre?

Si presiono construir con el siguiente script:

if __name__ == "__main__":

    class Strom(object):
        def __init__(self):
            self.preis_kilowattstunde = 0.21


        def stromkosten_pro_jahr(watt):
            '''
            (integer) -> float 

            leitet aus einer Zahl in Watt eines Objektes die Stromkosten pro Jahr ab
            '''
            print(watt * brennstunden_im_tag * 365 * self.preis_kilowattstunde / 1000)

        def stromkosten_differenz(watt_objekt1, watt_objekt2):
            '''
            (integer, integer) -> float

            Nimmt die Stromkosten in Watt zweier Objekte und gibt die Stromkostendifferenz in CHF aus.
            '''
            if watt_objekt2 > watt_objekt1:
                print(stromkosten_pro_jahr(watt_objekt2) - stromkosten_pro_jahr(watt_objekt1))
            else:
                print(stromkosten_pro_jahr(watt_objekt1) - stromkosten_pro_jahr(watt_objekt2)

Recibo el siguiente error:

  File "/home/empedokles/Dropbox/Yannick/Python/stromkosten.py", line 31

         ^
SyntaxError: invalid syntax
[Finished in 0.2s with exit code 1]
[shell_cmd: python -u "/home/empedokles/Dropbox/Yannick/Python/stromkosten.py"]
[dir: /home/empedokles/Dropbox/Yannick/Python]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

Respuesta1

A su código le falta un cierre )en la última línea, por lo que si intenta ejecutar su código tal como está, obtendrá un error.

Sin embargo, suponiendo que solucione eso, la ejecución de este código con Python 3 se completará correctamente, pero no dará ningún resultado. Estás definiendo una clase y un par de métodos, pero nunca creas una instancia de la clase ni llamas a ninguno de los métodos. Sin embargo, incluso si lo hiciera, obtendría un error que indica que brennstunden_im_tagno está definido en ninguna parte, por lo que obtendrá un error al intentar ejecutar stromkosten_pro_jahr(). También debe tenerlo selfcomo primer parámetro para cualquier método de clase. Finalmente, stromkosten_pro_jahr()debería ser returnel valor, no print()el. A continuación se muestra un ejemplo de cómo debería verse su código:

class Strom(object):
    def __init__(self, brennstunden_im_tag):
        self.preis_kilowattstunde = 0.21
        self.brennstunden_im_tag = brennstunden_im_tag

    def stromkosten_pro_jahr(self, watt):
        '''
        (integer) -> float

        leitet aus einer Zahl in Watt eines Objektes die Stromkosten pro Jahr ab
        '''
        return watt * self.brennstunden_im_tag * 365 * self.preis_kilowattstunde / 1000

    def stromkosten_differenz(self, watt_objekt1, watt_objekt2):
        '''
        (integer, integer) -> float

        Nimmt die Stromkosten in Watt zweier Objekte und gibt die Stromkostendifferenz in CHF aus.
        '''
        if watt_objekt2 > watt_objekt1:
            print(self.stromkosten_pro_jahr(watt_objekt2) - self.stromkosten_pro_jahr(watt_objekt1))
        else:
            print(self.stromkosten_pro_jahr(watt_objekt1) - self.stromkosten_pro_jahr(watt_objekt2))


if __name__ == "__main__":
    my_strom = Strom(10)
    my_strom.stromkosten_differenz(100, 50)

Esto vuelve 38.325; con suerte, ese es el resultado que estás buscando.

Respuesta2

Probablemente deberías instalar unpelusapaquete para ver qué está mal con su código, obviamente el problema está en su código.

información relacionada