Einfacher Text. Der Build funktioniert nicht. Was ist falsch?

Einfacher Text. Der Build funktioniert nicht. Was ist falsch?

Wenn ich mit folgendem Skript auf „Erstellen“ drücke:

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)

Ich erhalte folgenden Fehler:

  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]

Antwort1

In Ihrem Code fehlt )in der letzten Zeile ein Abschluss. Wenn Sie also versuchen, den Code unverändert auszuführen, wird eine Fehlermeldung angezeigt.

Wenn Sie das jedoch beheben, wird die Ausführung dieses Codes mit Python 3 erfolgreich abgeschlossen, es wird jedoch keine Ausgabe ausgegeben. Sie definieren eine Klasse und einige Methoden, instanziieren die Klasse jedoch nie und rufen keine der Methoden auf. Selbst wenn Sie dies täten, würden Sie einen Fehler erhalten, da brennstunden_im_tagnirgends definiert ist, sodass Sie beim Ausführen einen Fehler erhalten stromkosten_pro_jahr(). Sie müssen außerdem selfals ersten Parameter für jede Klassenmethode haben. Schließlich stromkosten_pro_jahr()sollte returnder Wert angegeben werden, nicht print()it. Hier ist ein Beispiel dafür, wie Ihr Code aussehen sollte:

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)

Dies gibt zurück 38.325– hoffentlich ist das das Ergebnis, nach dem Sie suchen.

Antwort2

Sie sollten wahrscheinlich installieren einLintersPaket, um zu sehen, was mit Ihrem Code nicht stimmt. Offensichtlich liegt das Problem in Ihrem Code.

verwandte Informationen