Formel "umwandeln"?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Kenq_
User
Beiträge: 2
Registriert: Mittwoch 10. Mai 2017, 15:35

Hey Liebe User,

ich bin erst neu in Python eingestiegen doch versuche mich schon an einem eigenen Programm, welches den Tag eines Datums errechnet.Zuerst habe ich das gemacht: d = (input("d = "))
m = (input("m = "))
y = (input("y = "))
c = (input("c = "))

Dann möchte ich mit der Formel : d + [2.6*m – 0.2] + y + [y/4] + [c/4] – 2*c den Tag errechnen, doch ich bekomme eine Fehlermeldung;
Line 5, in <module>
A = d + [2,6*m - 0,2] + y + [y/4] + [c/4] - 2*c
TypeError: unsupported operand type(s) for -: 'str' and 'int'

Ich hoffe jemand kann mir helfen c:
Wenn es nicht genug ausreicht was ich geschickt habe versuche ich so schnell wie möglich es zu ändern.

mfG Keno
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Kenq_: input liefert immer Strings, die Du per int in eine Zahlenobjekt verwandeln kannst.
Kenq_
User
Beiträge: 2
Registriert: Mittwoch 10. Mai 2017, 15:35

Wie mache ich das?
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Code: Alles auswählen

>>> text = "100"
>>> zahl = int(text)
>>> print(zahl)
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

Zusätzlich solltest du auch die eckigen durch runde Klammern ersetzen, damit das funktioniert. Mit deinem Code würdest du eine Liste mit einem Element erzeugen. Das führt dann gleich zum nächsten Fehler, da du dann versuchst, mit Zahlen und Listen zu rechnen. Bessere Variablennamen (Kleinbuchstaben und etwas sprechender) sowie das Entfernen der Klammern um Input wären weitere Punkte (außer, du möchtest dort schon int verwenden).
BlackJack

Apropos Punkte: Die verwendet man im englischen, und damit üblicherweise auch in Programmiersprachen, da wo in Dezimalbrüchen im Deutschen das Komma verwendet wird. Das Komma hat eine andere Bedeutung in Python.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Du kennst das datetime-Modul? Damit kannst Du eigentlich fast jedes Problem in Verbindung mit Datumsangaben lösen, denke ich. Ganz genau habe ich noch nicht verstanden, was Du da berechnen willst.

Code: Alles auswählen

import datetime

id2wochentag = {0 : "Montag",
                1 : "Dienstag",
                2 : "Mittwoch",
                3 : "Donnerstag",
                4 : "Freitag",
                5 : "Samstag",
                6 : "Sonntag"}

datum = datetime.date.today()

print("Heute ist {}.".format(id2wochentag[datum.weekday()]))
Wenn Du Dich mit Programmierung befasst, solltest Du immer überlegen, welches Problem Du selbst lösen musst und wo Du auf die vorhandene Lösung zurückgreifen kannst. [Mir fällt das selbst immer noch schwer.]
BlackJack

@pixewakb: Wobei man da eine Liste statt eines Wörterbuchs verwenden könnte. :-)

Edit: Mit dem `locale`- und dem `calendar`-Modul könnte man sich die Wochentagsnamen auch programmatisch besorgen.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Code: Alles auswählen

import locale
import datetime

locale.setlocale(locale.LC_TIME, locale.getdefaultlocale())
datum = datetime.date.today()
print("Heute ist {:%A}.".format(datum))
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

BlackJack hat geschrieben:@pixewakb: Wobei man da eine Liste statt eines Wörterbuchs verwenden könnte. :-)
Stimmt, würde den Aufwand noch mal reduzieren.
BlackJack hat geschrieben:Edit: Mit dem `locale`- und dem `calendar`-Modul könnte man sich die Wochentagsnamen auch programmatisch besorgen.
Darauf würde ich wahrscheinlich selbst nicht kommen - ist mir zu hoch :? , d. h. so tief bin ich in Python bislang noch nicht vorgedrungen. :?
BlackJack

@pixewakb: So ähnlich wie Sirius3's Ansatz — Locale auf Zielsprache setzen und dann vom `calendar`-Modul die Namen holen:

Code: Alles auswählen

In [28]: locale.setlocale(locale.LC_TIME, 'de_DE.UTF-8')
Out[28]: 'de_DE.UTF-8'

In [29]: list(calendar.day_name)
Out[29]: 
['Montag',
 'Dienstag',
 'Mittwoch',
 'Donnerstag',
 'Freitag',
 'Samstag',
 'Sonntag']
Antworten