我希望有人能给我一些例子,说明我可以返回执行以下操作的日历数据 .
- 返回任何给定月份(过去/现在/将来)的天数,但不包括星期六和星期日 .
Example:
输入('Year: ') - 2018
输入('Month: ') - 7
End Result: (2018年)(7月)的工作日数为( 22 ) .
- 在排除星期六后为每个工作日分配一个迭代器 . 和太阳
Example:
输入('Year: ') - 2018
输入('Month: ') - 7
输入('date: ') - 20
End Result: (20)是( Friday )并且是(7月),(2018)的( 15 ) weekday .
这是我迄今为止能够创建的代码......
import calendar
year = float(input('Year: '))
month = float(input('Month: '))
input_year = []
input_month = []
if year >= 1000 and year <=3000:
input_year.append(year)
if month >= 1 and month <=12:
input_month.append(month)
cal_format = calendar.TextCalendar(calendar.MONDAY)
result_cal = cal_format.formatmonth(int(input_year[0]), int(input_month[0]))
print(result_cal)
THE END RESULT IS...
Year: 1978
Month: 3
March 1978
Mo Tu We Th Fr Sa Su
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
这只打印出星期六的文本日历 . 和太阳在每周结束时,所以我至少可以在视觉上排除它们 . 但我真的希望能够以编程方式排除它们,并能够输入上述变量来计算一个月的工作日,以及每个工作日在该月内 .
4 回答
这是查找上一个工作日数量的一种方法:
请注意,年,月,日的类型转换为
int
.输出:
Code Golf上xsot的序号转换 .
我在大约10分钟内做了一个简单的解决方案 . 我的方法很大程度上依赖于列表推导和字符串方法,例如join和split,所以如果你不熟悉它们,我建议你查看它们 . 首先将结果拆分为行,tittle需要被删除,其他行需要删除最后一个字符 .
通过使用strip()方法在行的乞讨处删除空白,然后预先添加两个空格来接收第一行 .
在周末使用列表推导仅包含每行的前15个字符 .
最后一部分是最难的 . 我的想法是计算格式化日历中有多少天数 . 首先将带有日期数的所有行放入一个大行,然后用空格分割行以获得所有日期数的列表,最后使用列表的大小 .
检查日期工作日的一种方法是使用
date
对象的weekday()方法 . 它位于python标准库datetime
模块中 .要获得一个月中的工作日数量:
要获取特定日期的工作日编号,您可以修改上述代码以在达到输入日时返回工作日计数 .