|  | 
 
| 
本帖最后由 歌者文明清理员 于 2023-8-10 01:05 编辑
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 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)))))
 | 
 |