Seite 1 von 1

Formel "umwandeln"?

Verfasst: Mittwoch 10. Mai 2017, 16:02
von Kenq_
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

Re: Formel "umwandeln"?

Verfasst: Mittwoch 10. Mai 2017, 16:13
von Sirius3
@Kenq_: input liefert immer Strings, die Du per int in eine Zahlenobjekt verwandeln kannst.

Re: Formel "umwandeln"?

Verfasst: Mittwoch 10. Mai 2017, 16:17
von Kenq_
Wie mache ich das?

Re: Formel "umwandeln"?

Verfasst: Mittwoch 10. Mai 2017, 16:25
von __deets__

Code: Alles auswählen

>>> text = "100"
>>> zahl = int(text)
>>> print(zahl)

Re: Formel "umwandeln"?

Verfasst: Mittwoch 10. Mai 2017, 17:06
von nezzcarth
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).

Re: Formel "umwandeln"?

Verfasst: Mittwoch 10. Mai 2017, 17:35
von 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.

Re: Formel "umwandeln"?

Verfasst: Mittwoch 10. Mai 2017, 18:09
von pixewakb
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.]

Re: Formel "umwandeln"?

Verfasst: Mittwoch 10. Mai 2017, 18:19
von 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.

Re: Formel "umwandeln"?

Verfasst: Mittwoch 10. Mai 2017, 18:36
von Sirius3

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))

Re: Formel "umwandeln"?

Verfasst: Mittwoch 10. Mai 2017, 19:26
von pixewakb
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. :?

Re: Formel "umwandeln"?

Verfasst: Mittwoch 10. Mai 2017, 19:34
von 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']