您的位置:首页 > 编程语言 > Python开发

黑色星期五

2016-07-14 00:00 441 查看
问题描述:

黑色星期五源于西方的宗教信仰与迷信:耶稣基督死在星期五,而13是不吉利的数字。两者的结合令人相信当天会发生不幸的事情。星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的13日又恰逢星期五就叫“黑色星期五”。找出未来几年哪些天是“黑色星期五”。

我的代码:

#coding=utf-8
import calendar
import time
import datetime
print "星期0表示是星期一..."
def week(year,month,day=13):
blackfriday=datetime.datetime(year,month,day).strftime("%w")
if int(blackfriday)==5:
print "%d年%d月13号是黑色星期五..." % (year,month)
print ""

years=[]
months=range(1,13,1)
day=13
while True:
year=int(raw_input("输入年份(输入2333时退出):"))
if year==2333:
break
else:
years.append(year)

for y in years:
print "%d年的日历为:" % y
calendar.prcal(y)
for m in   months:
week(y,m,day)


我的思路:

以2016年为例,当初想到的就是先输出16年全年的日历,然后根据for循环遍历12个月的日历,通过某个函数输出每个月13号对应的是星期几,最后再判断是否等于星期五,如果是就输出;

首先定义一个函数,该函数传入年,月,日(默认13号)三个参数,通过datetime模块的datetime函数输出该天是星期几,然后判断是否为星期五并输出;

这个程序并不难,忽略了平年闰年的判断等操作,很容易读懂,但是写起来真不容易啊,想了好多最后还是觉得这种方法实现起来简单点;

结果:

星期0表示是星期日...

输入年份(输入2333时退出):2016

输入年份(输入2333时退出):2017

输入年份(输入2333时退出):2333

2016年的日历为:

2016

January February March

Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su

1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 6

4 5 6 7 8 9 10 8 9 10 11 12 13 14 7 8 9 10 11 12 13

11 12 13 14 15 16 17 15 16 17 18 19 20 21 14 15 16 17 18 19 20

18 19 20 21 22 23 24 22 23 24 25 26 27 28 21 22 23 24 25 26 27

25 26 27 28 29 30 31 29 28 29 30 31

April May June

Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su

1 2 3 1 1 2 3 4 5

4 5 6 7 8 9 10 2 3 4 5 6 7 8 6 7 8 9 10 11 12

11 12 13 14 15 16 17 9 10 11 12 13 14 15 13 14 15 16 17 18 19

18 19 20 21 22 23 24 16 17 18 19 20 21 22 20 21 22 23 24 25 26

25 26 27 28 29 30 23 24 25 26 27 28 29 27 28 29 30

30 31

July August September

Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su

1 2 3 1 2 3 4 5 6 7 1 2 3 4

4 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 11

11 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 18

18 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 25

25 26 27 28 29 30 31 29 30 31 26 27 28 29 30

October November December

Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su

1 2 1 2 3 4 5 6 1 2 3 4

3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11

10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18

17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25

24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31

31

2016年5月13号是黑色星期五...

2017年的日历为:

2017

January February March

Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su

1 1 2 3 4 5 1 2 3 4 5

2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12

9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19

16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26

23 24 25 26 27 28 29 27 28 27 28 29 30 31

30 31

April May June

Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su

1 2 1 2 3 4 5 6 7 1 2 3 4

3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11

10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18

17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25

24 25 26 27 28 29 30 29 30 31 26 27 28 29 30

July August September

Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su

1 2 1 2 3 4 5 6 1 2 3

3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10

10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17

17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24

24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30

31

October November December

Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su

1 1 2 3 4 5 1 2 3

2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10

9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17

16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24

23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31

30 31

2017年1月13号是黑色星期五...

2017年10月13号是黑色星期五...

总结:

打印某年的日历

calendar.prcal(year)

注意:calendar.prcal(2016)的类型是<type 'NoneType'>,并不能直接对其遍历;

2.关于日期的输出格式

>>> print datetime.datetime(2016,5,13)

2016-05-13 00:00:00

加上strftime("%w")就能输出星期了

datetime.datetime(2016,5,13).strftime("%w")

'5'

>>> print datetime.datetime(2016,5,13).strftime("%w")

5

补充:今天看了一篇文章,发现一周的表示范围是0到6,0表示星期一,自己理解为星期日了,特改正!

题目出处:http://www.cheemoedu.com/exercise/5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python