Python Kalender - Darstellung klappt nicht?

2 Antworten

Die Ausgabe klappt, nur müssen die Datumszahlen unter den richtigen Tag!

Ändere:

print("")
for x in range(1, tage_zahl[monat-1]+1):
	# if x == 1+1:
	#	print("\t", x1)
	if monat_name == tag_name.index("Dienstag"):
		print("     ]} ".format(:3d),x,end="")
		if x < 10:
			print("",x, end=" ")
	if x > 9:
		print(x, end=" ")
	if not x % 7:
		print(" ")

zu:

print("")
print("   "*(w-1),end="")  # w-1 Tage befinden sich noch im Vormonat
for x in range(1, tage_zahl[monat-1]+1):
	# if x == 1+1:
	#	print("\t", x1)
	#if monat_name == tag_name.index("Dienstag"):
	#print("     ]} ".format(:3d),x,end="")
	if x < 10:
		print("",x, end=" ")
	if x > 9:
		print(x, end=" ")
	if not (x+w-1) % 7:  # Tage des Vormonats dazuzählen
		print(" ")

P.s.: Einen einfachen Kalender kannst du in Python auch so machen:

import calendar
c = calendar.LocaleTextCalendar(calendar.MONDAY)
print(c.formatmonth(2019,12))

leon47331 
Beitragsersteller
 20.12.2019, 20:25

Kannst du mir vielleicht noch eine Frage beantworten:

Warum hast du das mit dem Mal gemacht?

print(" "*(w-1)

andie00  20.12.2019, 20:43
@leon47331

w ist, lt deiner Formel von Wikipedia, der Wochentag (als Zahl) auf den der 1. fällt, d.h. w-1 sind die Tage die sich im Vormonat befinden.

Das Print gibt 3 Leerzeichen (Platz eines Tages in deiner Ausgabe) w-1 mal aus.

Du kannst das Ganze natürlich auch mit .format schreiben.

Btw.: Es ist mir gerade aufgefallen, sobald du einen Monat < 3 hast stimmt deine erste Ausgabe Jahr: nicht mehr.

leon47331 
Beitragsersteller
 20.12.2019, 20:18

Hallo,

vielen Dank für deine Antwort.

Die ganz kurze Variante (ganz unten) kann ich leider nicht verwenden.

Wäre zu schön gewesen...

Was soll der Kalender denn genau darstellen?

Woher ich das weiß:Studium / Ausbildung – Informatikstudent

leon47331 
Beitragsersteller
 20.12.2019, 18:09

Oben sollen die Tage stehen und unter den Tagen sollen die Datumszahlen richtig eingereiht werden.

Hier der Code: https://textuploader.com/1on4p

Leider kann ich die Frage oben nicht ändern.