使用python计算某年七月有四个周五,四个周二,七月一周几?

针对于这种问题一般先寻找逻辑,七月都是三十一天,就将周一到周日循环排列三十一次,每次排列结束后判断三十一个数中是否是四个周五,四个周二,否则退出,废话不多说直接上代码

# 七月有两个周五,两个周二,七月一周几?
# 七月一共三十一天
day = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']  # 准备好循环的内容
while True:
    # 周一到周日排列循环31天
    data_day = []  # 循环错误一次后将列表清空,重新计算
    while True:
        for i2 in range(7):
            data_day.append(day[i2-1])  # 循环七次将周一至周日添加到data_day列表中
            if len(data_day) == 31:  # 如果data_day列表满足31位数就跳出,防止最后一次添加周数时添加过多
                break  # 跳出for循环
        if len(data_day) == 31:  # 判断data_day长度是否满足31位数,是则跳出
            break
    # 循环好一个月31天开始判断各周几出现的次数——使用字典
    dict_data = {}  # 建立一个字典,用来判断各周数出现的次数
    for key in data_day:
        dict_data[key] = dict_data.get(key, 0) + 1
    if dict_data['周二'] == 4 and dict_data['周五'] == 4:  # 如果周二出现4次,周五出现4此就跳出循环
        break
    else:  # 循环不对将周数列表的最后一位数插到第一位,最后一位删除,重新排列计算
        day.insert(0, day[-1])
        del day[-1]
    # 循环好一个月31天开始判断各周几出现的次数——使用列表.count方法
    # if data_day.count('周二') == 4 and data_day.count('周五') == 4:
    #     break
    # else:
    #     day.insert(0, day[-1])  # 将要循环的周一至周日顺序切换,最后一个数追加到第一位
    #     del day[-1]  # 再将最后一位数删除,完成重新排序

print('b月份长度:', len(data_day))  # 输出判断正确的循环好的31位列表
print('每周出现次数:', dict_data)
print('data_day列表:', data_day)
print('七月一是', data_day[0], sep='')

输出结果是:

b月份长度: 31
每周出现次数: {'周六': 5, '周日': 5, '周一': 5, '周二': 4, '周三': 4, '周四': 4, '周五': 4}
data_day列表: ['周六', '周日', '周一', '周二', '周三', '周四', '周五', '周六', '周日', '周一', '周二', '周三', '周四', '周五', '周六', '周日', '周一', '周二', '周三', '周四', '周五', '周六', '周日', '周一', '周二', '周三', '周四', '周五', '周六', '周日', '周一']
七月一是周六

上一篇:2022年规划


下一篇:2021年12月31日学习记录 续