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 
Fragesteller
 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...

1
leon47331 
Fragesteller
 20.12.2019, 20:25

Kannst du mir vielleicht noch eine Frage beantworten:

Warum hast du das mit dem Mal gemacht?

print(" "*(w-1)

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.

0

Was soll der Kalender denn genau darstellen?

Woher ich das weiß:Studium / Ausbildung – Informatikstudent

leon47331 
Fragesteller
 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.

0