Seite 1 von 1
Was ist das für ein Konstrukt (Name)?
Verfasst: Samstag 19. Juni 2021, 14:35
von dll-live
Hallo zusammen
Ich bin immer noch Anfänger - somit bitte wohlwollend antworten.
Bei meinem heutigen Streifzug durch das www - bin ich auf folgendes Konstrukt gestossen
Code: Alles auswählen
WochentagWort = ("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag")[datumobjekt.weekday()]
Natürlich habe ich das sofort ausprobiert und die Funktionsweise verstanden, nur frage ich mich - ob es für dieses Konstrukt einen "offiziellen" Namen gibt.
Besten Dank für euere Antworten.
Freundliche Grüsse
Daniel
Re: Was ist das für ein Konstrukt (Name)?
Verfasst: Samstag 19. Juni 2021, 14:58
von sparrow
Die Variable sollte wochentag_wort heißen.
Ansonsten ist das identisch zu:
Code: Alles auswählen
days = ("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag")
day = days[some_date.weekday()]
Wobei some_date.weekday() einen Integer für den Index-Zugriff zurück liefern muss.
Ist es so verständlicher?
Re: Was ist das für ein Konstrukt (Name)?
Verfasst: Samstag 19. Juni 2021, 14:59
von rogerb
Das ist im Grunde ein einfaches Tuple, aus dem direkt ein Element über einen variablen Index ausgewählt wird.
Ich glaube nicht, dass es dafür einen besonderen Namen gibt.
Re: Was ist das für ein Konstrukt (Name)?
Verfasst: Samstag 19. Juni 2021, 15:48
von dll-live
Hallo Zusammen
@sparrow: Besten Dank für deine Ausführungen. Dass man das ganze in zwei Zeilen schreiben kann, hatte ich schon vorher verstanden. Auch das "some_date.weekday() einen Integer" zurückliefert war mir verständlich. Das ist anschliessend als Index-Zugriff benutzt wird - das war mein Knoten - damit kann ich die weitere Brücke in meinem Kopf bauen - damit mein Knoten gelöst wurde.
@rogerb: Besten Dank, deine Erklärung (zusammen mit etwas Nachlesen im Web)- war das was ich gesucht habe - um meinen Knoten zu lösen.
Somit ist dieses Thema für mich hier erledigt.
Freundliche Grüsse
Daniel
Re: Was ist das für ein Konstrukt (Name)?
Verfasst: Samstag 19. Juni 2021, 18:52
von Sirius3
Statt selbst die Wochentage zu definieren, benutzt man das, was schon eingebaut ist:
Code: Alles auswählen
locale.setlocale(locale.LC_TIME, 'de_DE')
day = f"{some_date:%A}"
Re: Was ist das für ein Konstrukt (Name)?
Verfasst: Freitag 25. Juni 2021, 16:22
von DeaD_EyE
Für die unsinnige Konstruktion ist mir kein Name bekannt.
Unsinn deswegen, weil zuerst eine Tuple erzeugt wird, nur um dann daraus auf ein Element zuzugreifen und das dann dem Namen zuzuweisen.
Da die Wochentage und viele andere Strings bereits für alle möglichen Sprachen als Übersetzung vorliegen, sollte man lieber diese Funktion nutzen, anstatt selbst die Wochentage und Monate einzutippen. Selbst für die kurze Schreibweise gibt es Übersetzungen. Man kann aber nur die Sprachen nutzen, die auch unter Linux installiert sind.
Code: Alles auswählen
import locale
from datetime import date
locale.setlocale(locale.LC_TIME, 'ru_RU.UTF8')
print(f"Russisch: {date.today():%A}")
locale.setlocale(locale.LC_TIME, 'zh_CN.UTF8')
print(f"Chinesisch: {date.today():%A}")
Russisch: Пятница
Chinesisch: 星期五
Bei mir geht's, da ich die beiden locales in der /etc/locale.gen freigeschaltet habe.
Neben LC_TIME gibt es noch andere Bereiche wie z.B. LC_ALL für alles oder LC_NUMERIC.
Mit Zahlen geht es auch:
Code: Alles auswählen
print(locale.format_string("%.2f", 1342.5, grouping=True))
print(locale.currency(1342.5, grouping=True))
1.342,50
1.342,50 EUR
Viel Spaß mit i18n und l10n.