Was ist das für ein Konstrukt (Name)?

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
dll-live
User
Beiträge: 32
Registriert: Dienstag 11. August 2020, 09:25
Wohnort: CH

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
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

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?
Zuletzt geändert von sparrow am Samstag 19. Juni 2021, 15:00, insgesamt 1-mal geändert.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

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.
dll-live
User
Beiträge: 32
Registriert: Dienstag 11. August 2020, 09:25
Wohnort: CH

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
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

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}"
Benutzeravatar
DeaD_EyE
User
Beiträge: 1012
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

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.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten