秃头老汉子 2022-11-20 13:30 采纳率: 100%
浏览 23
已结题

用Python实现十至十六进制的转换,并绘制七段数码管显示出来。

现要求使用Python语言编写函数实现十进制至十六进制的转换,并绘制数码管将十进制及其对应的十六进制显示出来。
输入:
9999
输出:

img

  • 写回答

3条回答 默认 最新

  • JarodYv 人工智能领域新星创作者 2022-11-20 14:32
    关注

    我帮你写了一版,供你参考。

    import turtle
    
    t = turtle.Turtle()
    
    CHAR_MAP = {
        '0': 0b0111111,
        '1': 0b0000110,
        '2': 0b1011011,
        '3': 0b1001111,
        '4': 0b1100110,
        '5': 0b1101101,
        '6': 0b1111101,
        '7': 0b0000111,
        '8': 0b1111111,
        '9': 0b1101111,
        'a': 0b1110111,
        'b': 0b1111100,
        'c': 0b0111001,
        'd': 0b1011110,
        'e': 0b1111001,
        'f': 0b1110001,
        'h': 0b1110110,
    }
    
    
    def draw_digit(c):
        char = CHAR_MAP[c]
        for i in range(7):
            b = char & 0b0000001
            t.penup()
            t.forward(5)
            if b:
                t.pendown()
            else:
                t.penup()
            t.forward(25)
            t.penup()
            t.forward(5)
            if i == 5:
                t.penup()
                t.backward(35)
            if i in [0, 2, 3, 5]:
                t.right(90)
            char = char >> 1
    
    
    def draw_number(s):
        for c in s:
            draw_digit(c)
            t.penup()
            t.left(90)
            t.forward(35)
            t.right(90)
            t.forward(10)
    
    
    def draw(x, y, label, num_str, postfix, postfix_color):
        t.penup()
        t.goto(x, y)
        t.color("black")
        t.pendown()
        t.write(label, move=False, align='right', font=('宋体', 12, 'normal'))
        t.penup()
        t.goto(x, y + 40)
        draw_number(num_str)
        t.color(postfix_color)
        draw_digit(postfix)
    
    
    def main(dec_str):
        hex_str = str(hex(eval(dec_str)))
        draw(-250, 260, "十进制:", dec_str, 'b', 'red')
        draw(-250, 160, "十六进制:", hex_str[2:], 'h', 'green')
    
    
    if __name__ == "__main__":
        t.speed(0)
        t.pensize(5)
        t.hideturtle()
        n = input()
        main(n)
        turtle.done()
    

    运行效果图:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月1日
  • 已采纳回答 11月23日
  • 创建了问题 11月20日

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)