七段数码管绘制(十进制转十六进制)

七段数码管绘制


1.题目问题:

请添加图片描述


2.前言了解

我们可以使用海龟函数 turtle 来进行绘制,但在绘制之前我们要了解:

1.数码管知识点

请添加图片描述
请添加图片描述


2.turtle打印汉字:
# 这个函数就是打印汉字 没有移动的轨迹
import turtle ,os
def writeWord(target_word, startx, starty):  # 基于坐标,打印汉字
    """
    基于坐标,打印单个汉字
    :param target_word: 目标汉字
    :param startx: 起始位置x
    :param starty: 起始位置y
    :return:
    """
    turtle.color("black", "black")  # 设置画笔颜色
    turtle.pu()  # 抬起画笔
    turtle.goto(startx, starty)  # 移动到指定位置
    turtle.pd()  # 下笔
    turtle.write(target_word, move=False, align='left', font=('汉仪程行简', 120, 'normal'))  # 打印汉字
writeWord("牛逼",-400,0)
writeWord("牛逼",-400,-400)
os.system("pause")

请添加图片描述


2.键盘输入十进制转化为十六进制
a=input()
print(type(a)) #显示a的类型
a=int(a)#键盘输入为字符型,我们要转换为数字型
print(type(a)) #显示a的类型
a=hex(a)#变为十六进制
print(a)
b=a[2:].upper() #从第二位开始读到最后
print(b)

请添加图片描述

3.思路:

我们简单的分析一下问题:

输入:9999

输出 十进制 9999b和十六进制 270FH

很显然我们要将输入分为两部分输入一个是十进制,另一个是十六进制

1.我们先3个自定义函数,drawLine(绘制单段数码管);drawDAL(绘制单个数字或者字符)(Numbers and letters);writeWord(打印汉字);main(主函数)
2.在主函数中对于输出的需求:我们要用turtle打印汉字,十进制绘制;转化为十六进制输出
3.完成各部分函数

四.源码:

import turtle,os
def drawGap():#间隔
    turtle.penup()
    turtle.fd(5)
def drawLine(draw):# 绘制单段数码管(也就是一段线)
    drawGap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawGap()
    turtle.right(90)
def drawDigit(digit):
    drawLine(True) if digit in ['2','3','4','5','6','8','9','A','B','D','E','F','H','K','N','O','P','Q','S','T','W','X','Y','Z'] else drawLine(False)
    drawLine(True) if digit in ['0','1','3','4','5','6','7','8','9','A','B','D','G','H','I','J','K','M','N','O','Q','U','V','W','X','Y'] else drawLine(False)
    drawLine(True) if digit in ['0','2', '3','5','6','8','9','B','C','D','E','G','I','J','L','O','S','T','U','V','W','Y','Z'] else drawLine(False)
    drawLine(True) if digit in ['0','2','6','8','A','B','C','D','E','F','G','H','K','L','M','N','O','P','R','T','U','V','W','Z'] else drawLine(False)
    turtle.left(90)
    drawLine(True) if digit in ['0','4','5','6',' 8', '9','A','B','C','E','F','G','H','K','L','M','P','Q','R','T','U','W','X','Y'] else drawLine(False)
    drawLine(True) if digit in ['0','2', '3', '5','7', '8', '9','A','C','E','F','G','I','K','M','P','Q','R','S'] else drawLine(False)
    drawLine(True) if digit in ['0','1','2', '3', '4', '7', '8', '9','A','D','H','I','J','M','P','Q','U','W','Y','Z'] else drawLine(False)
    turtle.left(180)
    turtle.penup()
    turtle.fd(20)
def drawDate(date):
    turtle.pencolor("red")
    for i in date:
        drawDigit(i)
def writeWord(target_word):  # 打印汉字
    turtle.color("black", "black")  # 设置画笔颜色
    turtle.write(target_word, move=False, align='left', font=('宋体', 30, 'normal'))  # 打印汉字
def main():
    turtle.setup(800,450,100,100)
    turtle.penup()
    turtle.goto(-300,150)
    turtle.pensize(5)
    a=input()
    writeWord("十进制:")  #打印汉字十进制
    turtle.goto(-50, 150)
    drawDate(a)  #打印十进制
    drawDate('B') #在十进制后面加上b

    a=int(a)
    a=hex(a)
    b = a[2:].upper()  #将我们输入的A装化成十六进制

    turtle.goto(-300,0)
    writeWord("十六进制:")  #打印汉字十六进制
    turtle.goto(-50, 0)
    drawDate(b)  #打印十六进制
    drawDate('H')  # 在十六进制后面加上H
    turtle.hideturtle()
    turtle.done
    os.system("pause") #按任意键退出
main()

结果:

请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值