python怎么判断日期是星期几_一日一技:用Python做个能挂墙上的大钟表

fde71662753b05c26e1e928bc4d4de8e.png

43edbe2d7fd35e8598fef33a15e6167c.png

文章来源:python的爬虫与数据分析之路

作者:小dull鸟

今天给大家分享1个非常实用的python技能——用Python做个能挂墙上的大钟表,先上成果视频: 本项目用到的库主要有pygame、math、datetime等,另外还用到一些数学知识,勾股定理搞不明白的朋友就不要往下看了,可能会头晕。 第一步:用pygame画个圆 1.初始化画布参数 设置画布大小,添加标题,设置圆的原点、半径和角度: pygame.init()
screen = pygame.display.set_mode((600, 500))
pygame.display.set_caption("挂墙上的大钟表")
pos_x = 300; pos_y = 250 #原点坐标radius = 200  #半径angle = 360  #角度 2.画1个黑色边框的圆 : while True:
    screen.fill((255, 255, 255))  # 画布底色为白色for eventin pygame.event.get():if event.type== QUIT:
            sys.exit()
    keys = pygame.key.get_pressed()if keys[K_ESCAPE]:
        sys.exit()
    angle += 1if angle== 360:
        angle = 0pygame.draw.circle(screen, (0, 0, 0), (int(pos_x), int(pos_y)), radius, 10)
    pygame.display.update()

4ebe5d6f7e52dd0163330a716d525752.png

第二步:在圆上添加数字和刻度 1.添加数字 把圆周等分为12份,那么每份的角度为360/12,因为0点在垂直方向,所以再减去90度,由勾股定理,x=半径*cos(角度),y=半径*sin(角度),因此代码设置如下: for n in range(1, 13):
    angle = math.radians(n * (360/12) - 90)
    x = math.cos(angle) * (radius-30)-10y = math.sin(angle) * (radius-30)-10print_text(font, pos_x+x, pos_y+y, str(n))

9278ae12920c82e5c2323977335e201b.png

2.添加刻度 原理同上,只不过把圆分成了60份 for n in range(1, 61):
    angle = math.radians(n * (360/60) - 90)
    x = math.cos(angle) * (radius-15)
    y = math.sin(angle) * (radius-15)if n%5 == 0:
        print_text(pygame.font.Font(None, 15), pos_x+x, pos_y+y, str(0))else:
        print_text(pygame.font.Font(None, 10), pos_x + x, pos_y + y, str(0)) c601017c523db4a3b0d7a35ca24e1f73.png

第三步:画时针、分针和秒针

1.把当天的日期提取出来 我们需要用python的datetime库: from datetime import datetime
today = datetime.today()print(today) 2020-04-1218:48:57.733000 再把月、日、时、分、秒提取出来: month = today.month
day = today.day
hour = today.hour
minute = today.minute
second = today.second 2.开始画线,让指针动起来 先在中间画个半径为20的小圆圈 pygame.draw.circle(screen, (220, 220, 220), (pos_x, pos_y), 20, 6) 再画时针,主要用到pygame的draw.line函数: hour = int(today.time().hour)%12hour_angle = math.radians(hour*(30)-90)
hour_x = math.cos(hour_angle)*(radius-80)
hour_y = math.sin(hour_angle)*(radius-80)
hour_end = (pos_x+hour_x, pos_y+hour_y)
pygame.draw.line(screen, (0, 0, 0), (int(pos_x), int(pos_y)), hour_end, 15) 效果图:

1ea4152b072f206ab5da9b24b524139c.png

分针和秒针的的划线原理同时针,区别在于长度和粗细,加上分针和秒针的图为: ffb95017c5bb16947624045f62564bfe.png 第四步:添加日期和星期 先将日期转化为星期,主要用到datetime及date函数: def get_week_day():from datetimeimport datetime, date
    today = str(datetime.today().date()).split('-')import datetime
    day = date.weekday(datetime.datetime(int(today[0]), int(today[1]), int(today[2])))
    week_day_dict = {0: '星期一',1: '星期二',2: '星期三',3: '星期四',4: '星期五',5: '星期六',6: '星期日'}return week_day_dict[day] 调用该函数就会返回当天星期几 把当天的日期及星期加到钟表的合适位置: print_text(pygame.font.Font('C:\Windows\Fonts\AdobeHeitiStd-egular.otf', 30), 245, 300, str(today.date().month) + "月" + str(today.date().day) + "日")
print_text(pygame.font.Font('C:\Windows\Fonts\AdobeHeitiStd-egular.otf', 30) , 250, 330, get_week_day()) 钟表最终效果如下:

a934ada9964a920b0ecf138262830541.png

第五步:把钟表挂在墙上 这时你需要准备一个显示器,然后连接你的电脑,把运行程序后显示的钟表投到显示器上,最后把显示器挂在墙上就ok了
获取本文代码,请在公众号后台回复: 钟表

如果你觉得文章不错的话,分享、收藏、在看、留言666是对老表的最大支持。

652637e4ddba141863f20dcd874d1ba6.png

老表Pro已经满了

所以大家加老表Max吧

每日留言

说说你最近遇到的一个编程问题?

或者新学的一个小技巧?

(字数不少于15字)f3023a63910bf07e5aee34a28bc5bb4d.png

完整Python基础知识要点

Python小知识 | 这些技能你不会?(一) Python小知识 | 这些技能你不会?(二) Python小知识 | 这些技能你不会?(三) Python小知识 | 这些技能你不会?(四)

近期推荐阅读:

【1】整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了 【2】【终篇】Pandas中文官方文档:基础用法6(含1-5)

好文章,我在看❤️

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值