[PYTHON] Holen Sie sich einen Tag von Zellers gemeinsamer Zeremonie ~ Übrigens der ewige Kalender ~

Berechnen Sie aus Zellers Kongruenzformel, welcher Tag ein Tag ist.

calcal.py


#!/usr/bin/python3
import sys
y = int(sys.argv[1])
m = int(sys.argv[2])
d = int(sys.argv[3])
youbia = ["Tag", "Mond", "Feuer", "Wasser", "Holz", "Geld", "Boden"]

if (m == 1 or m == 2):
    md = m+10
    yd = y-1
else:
    md = m-2
    yd = y

a = yd // 100
b = yd % 100
youbi = (int(2.6*md - 0.2) + d + b + b//4 + a//4 - 2*a)%7

print("ANZEIGE", y, "Jahr", m, "Mond", d, "Tag", youbia[youbi], "Es ist ein Tag.",sep="")

Ausgabebeispiel

$ calcal.py 1967 5 12
Der 12. Mai 1967 ist Freitag.
$ calcal.py 1994 12 25
Der 25. Dezember 1994 ist Sonntag.
$ calcal.py 1995 12 24
Der 24. Dezember 1995 ist Sonntag.
$ calcal.py 1998 12 24
Der 24. Dezember 1998 ist Donnerstag.
$ calcal.py 2000 5 12
Der 12. Mai 2000 ist Freitag.
$ calcal.py 2019 12 25
Der 25. Dezember 2019 ist Mittwoch.
$ calcal.py 10000 5 12
Der 12. Mai 10000 n. Chr. Ist Freitag.
$ 

Ewiger Kalender

Übrigens ist es ein Programm, das den ewigen Kalender ausgibt.

cal.py


#!/usr/bin/python3
import sys
argvs = sys.argv
argc = len( argvs )
months=[31,28,31,30,31,30,31,31,30,31,30,31]
youbia = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]

def weekofday(y,m,d):
  md, yd = (m-2, y) if m > 2 else (m+10, y-1)
  a, b = divmod(yd, 100)
  return ( (int(2.6*md - 0.2) + d + b + b//4 + a//4 - 2*a)%7)

def printcal(y,m):
  mm=months[m-1]+(1 if (m==2 and y%4==0 and y%400!=0) else 0)
  print(y,m,sep='/')
  print (*youbia,sep=' ')
  f=weekofday(y,m,1)
  print("    "*f,end='')
  for i in range(1,mm+1):
    print(" %2d " %i,end='')
    if f==6:
      print("")
    f=(f+1)%7
  if f!=0:
    print("")

  
if argc==3:
  y = int(sys.argv[1])
  m = int(sys.argv[2])
else:
  print("Usage : cal.py y m")
  exit(1)
printcal(y,m)


Ausgabebeispiel

$ cal.py 2020 2
2020/2
Sun Mon Tue Wed Thu Fri Sat
                          1 
  2   3   4   5   6   7   8 
  9  10  11  12  13  14  15 
 16  17  18  19  20  21  22 
 23  24  25  26  27  28  29 
$

Ständiger Kalender (2)

cal.py version 2.0 Hier ist ein Code, der die Tagesberechnung und den ewigen Kalender zusammenfasst. Die Tagesberechnungsfunktion ist die der von kkdd dargestellten Ganzzahlberechnung. $ ./cal.py y m, um den Kalender für Jahr y Jahr m Monat anzuzeigen. $ ./cal.py y m d zeigt den Tag des Jahres m Monat d Tag an.

cal.py


#!/usr/bin/python3
import sys
argvs = sys.argv
argc = len( argvs )
months=[31,28,31,30,31,30,31,31,30,31,30,31]
youbia = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]

def dayofweek(year, month, day):
  m = (month-3)%12
  y = year if month >= 3 else year - 1
  n = day + (13*m+2)//5 + y + y//4 - (y//100) + y//400 + 2
  return (n%7)

def printcal(y,m):
  mm=months[m-1]+(1 if (m==2 and y%4==0 and y%400!=0) else 0)
  print(y,m,sep='/')
  print (*youbia,sep=' ')
  f=dayofweek(y,m,1)
  print("    "*f,end='')
  for i in range(1,mm+1):
    print(" %2d " %i,end='')
    if f==6:
      print("")
    f=(f+1)%7
  if f!=0:
    print("")

if argc==3:
  y = int(sys.argv[1])
  m = int(sys.argv[2])
  printcal(y,m)
elif argc==4:
  y = int(sys.argv[1])
  m = int(sys.argv[2])
  d = int(sys.argv[3])
  f = dayofweek(y,m,d)
  print(y, "/", m, "/", d, " is ", youbia[f],sep="")

else:
  print("Usage : cal.py y m [d]")
  exit(1)

Recommended Posts

Holen Sie sich einen Tag von Zellers gemeinsamer Zeremonie ~ Übrigens der ewige Kalender ~
[Python] Holen Sie sich den Tag (Englisch & Japanisch)
Holen Sie sich den letzten Tag des angegebenen Monats
Holen Sie sich WordPress-Beiträge aus der letzten Woche
Holen Sie sich den Inhalt von Git Diff aus Python
Finden Sie den Tag nach Datum / Uhrzeit heraus
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
An welchem Tag kaufst du Geld?
Was tun, wenn Sie "locale.Error: nicht unterstützte Gebietsschemaeinstellung" erhalten, wenn Sie den Tag vom Datum in Python abrufen?
Aggregieren Sie die täglichen Treffer pro Sekunde aus den Webserver-Protokollen in Python