
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_tag
nirgends definiert ist, sodass Sie beim Ausführen einen Fehler erhalten stromkosten_pro_jahr()
. Sie müssen außerdem self
als ersten Parameter für jede Klassenmethode haben. Schließlich stromkosten_pro_jahr()
sollte return
der 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.