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

用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日

悬赏问题

  • ¥40 求一款能支持ios15以上的屏蔽越狱插件。比较好用的
  • ¥15 C++ QT对比内存字符(形式不定)
  • ¥30 C++第三方库libiconv 远程安装协助
  • ¥15 https://github.com/youlaitech/vue3-element-admin/blob/master/src/store/modules/user.ts 这2句代码如何理解
  • ¥15 duilib开发文本字串超过长度显示
  • ¥20 mysql的.ibd文件为啥那么多
  • ¥15 C++中采用栈和BFS算法求解迷宫问题
  • ¥15 关于#java#的问题:这是跳转失败出现的界面这是哪个出现问题的servlet(开发工具-ide)
  • ¥15 EBS R12费用采购跨月冲销
  • ¥15 python中用mplfinance如何做到多股同列?