python - 我怎样才能在两行中制作这个日历(python)
问题描述
我怎样才能把这个日历分成两行(水平)
# List of tuples for Months and date ranges
# + 1 added to avoid confusion of max day range
calender = [('January', range(1, 31 + 1)),
('Feburary', range(1, 28 + 1)),
('March', range(1, 31 + 1)),
('April', range(1, 30 + 1)),
('May', range(1, 31 + 1)),
('June', range(1, 30 + 1)),
('July', range(1, 31 + 1)),
('August', range(1, 31 + 1)),
('September', range(1, 30 + 1)),
('October', range(1, 31 + 1)),
('November', range(1, 30 + 1)),
('December', range(1, 31 + 1))]
week = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
def make_calendar(year, start_day):
"""
make_calendar(int, str) --> None
"""
# Determine current starting position on calendar
start_pos = week.index(start_day)
# if True, adjust Feburary date range for leap year | 29 days
if is_leap(year):
calender[1] = ('Feburary', range(1, 29 + 1))
for month, days in calender:
# Print month title
print('{0} {1}'.format(month, year).center(20, ' '))
# Print Day headings
print(''.join(['{0:<3}'.format(w) for w in week]))
# Add spacing for non-zero starting position
print('{0:<3}'.format('')*start_pos, end='')
for day in days:
# Print day
print('{0:<3}'.format(day), end='')
start_pos += 1
if start_pos == 7:
# If start_pos == 7 (Sunday) start new line
print()
start_pos = 0 # Reset counter
print('\n')
def is_leap(year):
"""Checks if year is a leap year"""
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
return True
else:
return False
else:
return True
else:
return False
yr=int(input('Enter Year'))
strtday=input('Enter start day of the year Mo,Tu,We,Th,Fr,Sa,Su')
make_calendar(yr,strtday)
解决方案
两条线路,没有自行车
import calendar
calendar.TextCalendar().pryear(int(input('Enter Year')))
推荐阅读
- java - 表达式是否被认为是语句而不是其他方式?混乱
- php - 带有 Highcharts 的 codeigniter - 数据不来控制器查看
- java - 如何在mongo morphia中的2个日期之间求和?
- excel - 具有多个 if 或的公式
- android - XML 数据绑定过多
- android - java.lang.IllegalStateException:必须在使用 singleton() 之前初始化 Fabric
- python - 使用 tensorflow 对象检测 api 时所有图像是否必须具有相同的大小?
- html - 如何让 div 在 Bootstrap 中填充其父列的整个高度
- c# - 使用自创证书的 WCF SecurityTokenValidationException
- android - 使用 Post 进行改造