You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用两行Python代码生成横向排版的日历?

用两行Python代码生成日历(含横向排版版本)

嘿,这里有两种简洁的实现方式,刚好满足你“两行代码”的需求:

一、常规纵向排版日历

第一行定义月份和对应天数的映射,第二行循环打印每个月份的日历内容:

calendar = [('January', range(1,32)), ('February', range(1,29)), ('March', range(1,32)), ('April', range(1,31)), ('May', range(1,32)), ('June', range(1,31)), ('July', range(1,32)), ('August', range(1,32)), ('September', range(1,31)), ('October', range(1,32)), ('November', range(1,31)), ('December', range(1,32))]
for month, days in calendar: print(f"* {month} *\n{' '.join(map(str, days))}\n")

简单说明:

  • 第一行用元组列表存储每个月份和对应的日期范围(这里默认是平年,二月28天,闰年的话直接把二月的范围改成range(1,30)就行)
  • 第二行遍历列表,用格式化字符串生成月份标题,再把日期转成字符串拼接后打印,每个月份之间留空行分隔,阅读起来更清晰

二、横向排版日历

如果要横向展示所有月份,我们可以调整输出格式,把月份按组拆分后横向拼接:

calendar = [('January', range(1,32)), ('February', range(1,29)), ('March', range(1,32)), ('April', range(1,31)), ('May', range(1,32)), ('June', range(1,31)), ('July', range(1,32)), ('August', range(1,32)), ('September', range(1,31)), ('October', range(1,32)), ('November', range(1,31)), ('December', range(1,32))]
print('\n'.join([''.join([f"{month:<12} {' '.join(map(str, days)):<30}" for month, days in calendar[i:i+3]]) for i in range(0,12,3)]))

简单说明:

  • 第一行同样是月份和日期的映射
  • 第二行用列表推导式把12个月份按每3个一组拆分,每组内的每个月份内容都格式化为固定宽度(月份名占12字符,日期串占30字符),然后把每组的三个月份块横向拼接成一行,最后把所有行用换行符连接打印,实现三列横向排版的效果

内容的提问来源于stack exchange,提问作者small imp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:16:45