鱼C论坛

 找回密码
 立即注册
查看: 3293|回复: 13

[已解决]python七段数码管绘制(实现十六进制的输出)

[复制链接]
发表于 2018-11-15 15:54:19 | 显示全部楼层 |阅读模式
20鱼币
要求使用turtle库和datetime库
实现输入一个十六进制的数
然后绘制出对应的七段数码管

例如我上传的这种图的这种形式

我描述的可能不太清晰,多多包涵!
最佳答案
2018-11-15 15:54:20
  1. from turtle import *

  2. text=input('请输入年月日:(20181111):')
  3. l=len(text)
  4. setup(800,800,0,800)
  5. pencolor('red')
  6. hideturtle()
  7. pensize(4)

  8. def draw(i,s):
  9.     home()
  10.     penup()
  11.     goto(i*60-300,0)
  12.     if s=='1':
  13.         fd(40)
  14.         rt(90)
  15.         pendown()
  16.         fd(80)
  17.     if s=='2':
  18.         pendown()
  19.         fd(40)
  20.         rt(90)
  21.         fd(40)
  22.         rt(90)
  23.         fd(40)
  24.         lt(90)
  25.         fd(40)
  26.         lt(90)
  27.         fd(40)
  28.     if s=='3':
  29.         pendown()
  30.         fd(40)
  31.         rt(90)
  32.         fd(80)
  33.         rt(90)
  34.         fd(40)
  35.         penup()
  36.         goto(i*60-300,-40)
  37.         pendown()
  38.         rt(180)
  39.         fd(40)
  40.     if s=='4':
  41.         pendown()
  42.         rt(90)
  43.         fd(40)
  44.         lt(90)
  45.         fd(40)
  46.         lt(90)
  47.         fd(40)
  48.         lt(180)
  49.         fd(80)
  50.     if s=='5':
  51.         pendown()
  52.         fd(40)
  53.         goto(i*60-300,0)
  54.         rt(90)
  55.         fd(40)
  56.         lt(90)
  57.         fd(40)
  58.         rt(90)
  59.         fd(40)
  60.         rt(90)
  61.         fd(40)
  62.     if s=='6':
  63.         goto(i*60-260,0)
  64.         pendown()
  65.         rt(180)
  66.         fd(40)
  67.         lt(90)
  68.         fd(80)
  69.         lt(90)
  70.         fd(40)
  71.         lt(90)
  72.         fd(40)
  73.         lt(90)
  74.         fd(40)
  75.     if s=='7':
  76.         pendown()
  77.         fd(40)
  78.         rt(90)
  79.         fd(80)
  80.     if s=='8':
  81.         pendown()
  82.         fd(40)
  83.         rt(90)
  84.         fd(80)
  85.         rt(90)
  86.         fd(40)
  87.         rt(90)
  88.         fd(80)
  89.         goto(i*60-300,-40)
  90.         rt(90)
  91.         fd(40)
  92.     if s=='9':
  93.         goto(i*60-260,-40)
  94.         pendown()
  95.         rt(180)
  96.         fd(40)
  97.         rt(90)
  98.         fd(40)
  99.         rt(90)
  100.         fd(40)
  101.         rt(90)
  102.         fd(80)
  103.     if s=='0':
  104.         pendown()
  105.         fd(40)
  106.         rt(90)
  107.         fd(80)
  108.         rt(90)
  109.         fd(40)
  110.         rt(90)
  111.         fd(80)
  112.     penup()
  113. for i in range(len(text)):
  114.     draw(i,text[i])
  115. mainloop()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-15 15:54:20 | 显示全部楼层    本楼为最佳答案   
  1. from turtle import *

  2. text=input('请输入年月日:(20181111):')
  3. l=len(text)
  4. setup(800,800,0,800)
  5. pencolor('red')
  6. hideturtle()
  7. pensize(4)

  8. def draw(i,s):
  9.     home()
  10.     penup()
  11.     goto(i*60-300,0)
  12.     if s=='1':
  13.         fd(40)
  14.         rt(90)
  15.         pendown()
  16.         fd(80)
  17.     if s=='2':
  18.         pendown()
  19.         fd(40)
  20.         rt(90)
  21.         fd(40)
  22.         rt(90)
  23.         fd(40)
  24.         lt(90)
  25.         fd(40)
  26.         lt(90)
  27.         fd(40)
  28.     if s=='3':
  29.         pendown()
  30.         fd(40)
  31.         rt(90)
  32.         fd(80)
  33.         rt(90)
  34.         fd(40)
  35.         penup()
  36.         goto(i*60-300,-40)
  37.         pendown()
  38.         rt(180)
  39.         fd(40)
  40.     if s=='4':
  41.         pendown()
  42.         rt(90)
  43.         fd(40)
  44.         lt(90)
  45.         fd(40)
  46.         lt(90)
  47.         fd(40)
  48.         lt(180)
  49.         fd(80)
  50.     if s=='5':
  51.         pendown()
  52.         fd(40)
  53.         goto(i*60-300,0)
  54.         rt(90)
  55.         fd(40)
  56.         lt(90)
  57.         fd(40)
  58.         rt(90)
  59.         fd(40)
  60.         rt(90)
  61.         fd(40)
  62.     if s=='6':
  63.         goto(i*60-260,0)
  64.         pendown()
  65.         rt(180)
  66.         fd(40)
  67.         lt(90)
  68.         fd(80)
  69.         lt(90)
  70.         fd(40)
  71.         lt(90)
  72.         fd(40)
  73.         lt(90)
  74.         fd(40)
  75.     if s=='7':
  76.         pendown()
  77.         fd(40)
  78.         rt(90)
  79.         fd(80)
  80.     if s=='8':
  81.         pendown()
  82.         fd(40)
  83.         rt(90)
  84.         fd(80)
  85.         rt(90)
  86.         fd(40)
  87.         rt(90)
  88.         fd(80)
  89.         goto(i*60-300,-40)
  90.         rt(90)
  91.         fd(40)
  92.     if s=='9':
  93.         goto(i*60-260,-40)
  94.         pendown()
  95.         rt(180)
  96.         fd(40)
  97.         rt(90)
  98.         fd(40)
  99.         rt(90)
  100.         fd(40)
  101.         rt(90)
  102.         fd(80)
  103.     if s=='0':
  104.         pendown()
  105.         fd(40)
  106.         rt(90)
  107.         fd(80)
  108.         rt(90)
  109.         fd(40)
  110.         rt(90)
  111.         fd(80)
  112.     penup()
  113. for i in range(len(text)):
  114.     draw(i,text[i])
  115. mainloop()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-15 15:54:59 | 显示全部楼层

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-15 15:59:17 | 显示全部楼层
16进制数怎么转换成日期还是就用到0-9每位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-15 16:33:36 | 显示全部楼层
本帖最后由 一剑灬烟雨 于 2018-11-15 16:36 编辑


我自己写的 可能不是很好     只需要把输出的数字转换为16进制就OK了

七段数码管_无缝刷新版.txt

8.26 KB, 阅读权限: 10, 下载次数: 16

因为不能上传.py的文件,改一下后缀就行了

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-15 16:37:39 | 显示全部楼层
turtle库不熟悉,路过看看,大侠是怎么用这个库的。
等。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-15 17:02:27 | 显示全部楼层
其实可以设置数字驱动LED段的交集,能减少点重复工作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-16 17:23:55 | 显示全部楼层
对不起各位,我上面描述错了,不需要用datetime库,只需要turtle库,要求输入一个十六进制的数,然后在屏幕上绘制(一笔一划的用画笔画出)它的七段数码管形式,数字不用说了,字母如下图表示:

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-16 17:25:35 | 显示全部楼层

麻烦你了,我描述问题出错了,对不起,我已经回帖重新说明了,不论你是否还感兴趣解答我都不胜感激!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-16 17:27:05 | 显示全部楼层
一剑灬烟雨 发表于 2018-11-15 16:33
我自己写的 可能不是很好     只需要把输出的数字转换为16进制就OK了

抱歉了,我描述问题错了,感谢你的回答,我很感激!正确的描述我回帖说明了,最后再次表示感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-16 17:27:42 | 显示全部楼层
喜欢吃菠菜 发表于 2018-11-15 16:37
turtle库不熟悉,路过看看,大侠是怎么用这个库的。
等。。。

一起学习进步呗~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-16 17:39:26 | 显示全部楼层
这个有点像以前做单片机,做过的东西。
和6楼的做法差不多。
就是在后面家多几个判断
不过,如果是我来做的话就不用if进行判断,用字典了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-16 18:28:08 | 显示全部楼层
wumingshi 发表于 2018-11-16 17:25
麻烦你了,我描述问题出错了,对不起,我已经回帖重新说明了,不论你是否还感兴趣解答我都不胜感激!

我感觉我已经写的很详细了,自己改改就完了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-16 21:40:45 | 显示全部楼层
塔利班 发表于 2018-11-16 18:28
我感觉我已经写的很详细了,自己改改就完了

嗯,好的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 03:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表