不运用模块儿而是依赖循环,写一个2021年日历,要求是一行打印一个月,星期日在前,并且同时输出到txt文件中
import datetime
Width = 5
months = {'Jan': 31,'Feb': 28,'Mar': 31,'Apr': 30,'May': 31,'Jun': 30,'Jul': 31,'Aug': 31,'Sep': 30,'Oct': 31,'Nov': 30,'Dec': 31,}
weekdays = ["Sun".center(Width), 'Mon'.center(Width), 'Tue'.center(Width), 'Wed'.center(Width), 'Thu'.center(Width), 'Fri'.center(5), 'Sat'.center(Width)]
with open(r"calendar.txt", 'a') as f:
for m, mv in enumerate(months.items(), 1):
line = ''
f.write(mv[0].center(Width *7))
f.write('\n')
f.write(''.join(weekdays) + '\n')
print(mv[0].center(Width *7))
print()
print(''.join(weekdays))
for j in range(1, mv[1] + 1):
curday = (datetime.datetime(2021, m, j).weekday() + 1) % 7
if j == 1:
for _ in range(curday):
print(''.center(Width), end='')
line += ''.center(Width)
if curday == 6:
print(str(j).center(Width))
line +=str(j).center(Width) + '\n'
else:
print(str(j).center(Width), end='')
line +=str(j).center(Width)
f.write(line + '\n')
print()
import datetime
Width = 5
months = {'Jan': 31,'Feb': 28,'Mar': 31,'Apr': 30,'May': 31,'Jun': 30,'Jul': 31,'Aug': 31,'Sep': 30,'Oct': 31,'Nov': 30,'Dec': 31,}
weekdays = ["Sun".center(Width), 'Mon'.center(Width), 'Tue'.center(Width), 'Wed'.center(Width), 'Thu'.center(Width), 'Fri'.center(5), 'Sat'.center(Width)]
for m, mv in enumerate(months.items(), 1):
print(mv[0].center(Width *7))
print()
print(''.join(weekdays))
for j in range(1, mv[1] + 1):
curday = (datetime.datetime(2021, m, j).weekday() + 1) % 7
if j == 1:
for _ in range(curday):
print(''.center(Width), end='')
if curday == 6:
print(str(j).center(Width))
else:
print(str(j).center(Width), end='')
print()