|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 歌者文明清理员 于 2023-8-10 01:05 编辑
https://fishc.com.cn/thread-232176-1-1.html
我的答案:
- import datetime
- count = 0
- for y in range(1901, 2001):
- for m in range(1, 12):
- date = datetime.date(y, m, 1).weekday()
- if date == 0:
- count += 1
- print(count)
复制代码
写到一行:
- print(sum(map(lambda x: __import__('datetime').date(*x, 1).weekday() == 0, zip(list(range(1901, 2001)), list(range(1, 12)) * 100))))
复制代码
哪里错了 输出了14
自己解决了:
- 忽略了“左闭右开”性质
- 列表枚举错误,list(range(1901, 2001)) 是 [1901, ..., 2001],共 100 项;而第二个参数有 11(更正后是 12)* 100 = 1200 项,所以只有前面的 100 项有效。
我的本意是两个 iterable 组合,查到了 itertools.product
更正后代码:
- import datetime
- count = 0
- for y in range(1901, 2001):
- for m in range(1, 13):
- date = datetime.date(y, m, 1).weekday()
- if date == 0:
- count += 1
- print(count)
- print(sum(map(lambda x: __import__('datetime').date(*x, 1).weekday() == 0, __import__('itertools').product(range(1901, 2001), range(1, 13)))))
复制代码 |
|