Python: 每日一题之特殊时间

编程入门 行业动态 更新时间:2024-10-08 08:26:12

Python: 每日一题之特殊<a href=https://www.elefans.com/category/jswz/34/1771441.html style=时间"/>

Python: 每日一题之特殊时间

问题描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

2022 年 2 月 22 日 22: 20 是一个很有意义的时间, 年份为 2022 , 由 3 个 2 和 1 个 0 组成, 如果将月和日写成 4 位, 为 0222 , 也是由 3 个 2 和 1 个 0 组 成, 如果将时间中的时和分写成 4 位, 还是由 3 个 2 和 1 个 0 组成。

小张对这样的时间很感兴趣, 他还找到了其它类似的例子, 比如 111 年 10 月 11 日 01: 11,2202 年 2 月 22 日 22: 02等。

请问, 总共有多少个时间是这种年份写成 4 位、月日写成 4 位、时间写成 4 位后由 3 个一种数字和 1 个另一种数字组成。注意 1111 年 11 月 11 日 11: 1111:11 不算,因为它里面没有两种数字。

分析: 

根据题意分析得:在相同的数字中我们只能取 1 和 2 ,不可能出现 0 月,0 时

       年      月       日        时  分
范围0 --- 99991--12       0--310--23     0--59

我们把数据分为三组,可见月份对于数据的约束性最强

月日中可能出现的数据:0111,0222,3月至9月无,1011,11月1日、10日至19日、21日,1211,1222

对于任意一种年份都是存在的,我们先不用管年,先判断月日、时分中出现 3 个1 或 2的情况,我们找到所有是月份日期及时间后,只需其中的三个一样的数字和一个不同的数字全排列,就字符串中所有字符的所有排列,最后的结果乘以 4 即可得到最终结果(乘以四是加上年的)

def panduan(n):if n.count('1')==3 or n.count('2')==3:return Truereturn False
day=[]                # 月 日
for m in range(1,13):for d in range(1,31):s="%02d%02d" %(m,d) #格式化补 0s1=sorted(s)if panduan(s):day.append(s1)
hour=[]               # 时间:小时和分钟
for h in range(0,24):for m in range(0,60):s="%02d%02d" %(h,m)s1=sorted(s)if panduan(s):hour.append(s1)
sum = 0
for j in day: #遍历月日for k in hour: #遍历时分if j==k:sum+=1
print(sum*4)

注意:

  1. 年 月 日 时 分 中只有两种数字
  2. 日期要合法

更多推荐

Python: 每日一题之特殊时间

本文发布于:2024-02-06 05:42:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1746844.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:时间   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!