秃头老汉子 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日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大