lbjcrazy 2021-10-23 10:04 采纳率: 80%
浏览 12
已结题

为什么我写的“七段数码管绘制函数”运行时把“年、月、日”中的“日”也判断成了“月”?

输出结果如下所示,,可以看到本来应该是23日结果输出成了23月,甚至多输出了一次年份:

img


代码如下所示:


#七个灯数码管绘制
import turtle, time
def draw_gap():
    turtle.penup()
    turtle.fd(5)
def draw_line(draw):
    draw_gap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    draw_gap()
    turtle.right(90)
def draw_digit(number):
    draw_line(True) if number in [2,3,4,5,6,8,9] else draw_line(False)
    draw_line(True) if number in [0,1,3,4,5,6,7,8,9] else draw_line(False)
    draw_line(True) if number in [0,2,3,5,6,8] else draw_line(False)
    draw_line(True) if number in [0,2,6,8] else draw_line(False)
    turtle.left(90)
    draw_line(True) if number in [0,4,5,6,8,9] else draw_line(False)
    draw_line(True) if number in [0,2,3,5,6,7,8,9] else draw_line(False)
    draw_line(True) if number in [0,1,2,3,4,7,8,9] else draw_line(False)
    turtle.left(180)
    turtle.penup()
    turtle.fd(20)
def draw_date(date):
    turtle.pencolor("red")
    for i in date:
        if i == "-":
            turtle.pencolor("green")
            turtle.write("年", font=("Arial", 18,"normal"))
            turtle.fd(40)
        elif i == '=':
            turtle.pencolor("green")
            turtle.write("月", font=("Arial", 18, "normal"))
            turtle.fd(40)
        elif i == '+':
            turtle.pencolor("green")
            turtle.write("月", font=("Arial", 18, "normal"))
            turtle.fd(40)
        else:
            turtle.pencolor("red")
            draw_digit(eval(i))
    for i in date:
        draw_digit(eval(i))
def main():
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    draw_date(time.strftime("%Y-%m=%d+", time.gmtime()))
    turtle.hideturtle()
    turtle.done
main()

还有一个疑问:明明我加了turtle.done,为什么它画完之后还是会自动退出呢?

  • 写回答

1条回答 默认 最新

  • 辉煌仪奇 2021-10-23 10:15
    关注

    因为你将日写成了月

    img


    做如下修改就好

    有帮助请采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力

    # 七个灯数码管绘制
    import turtle, time
    
    
    def draw_gap():
        turtle.penup()
        turtle.fd(5)
    
    
    def draw_line(draw):
        draw_gap()
        turtle.pendown() if draw else turtle.penup()
        turtle.fd(40)
        draw_gap()
        turtle.right(90)
    
    
    def draw_digit(number):
        draw_line(True) if number in [2, 3, 4, 5, 6, 8, 9] else draw_line(False)
        draw_line(True) if number in [0, 1, 3, 4, 5, 6, 7, 8, 9] else draw_line(False)
        draw_line(True) if number in [0, 2, 3, 5, 6, 8] else draw_line(False)
        draw_line(True) if number in [0, 2, 6, 8] else draw_line(False)
        turtle.left(90)
        draw_line(True) if number in [0, 4, 5, 6, 8, 9] else draw_line(False)
        draw_line(True) if number in [0, 2, 3, 5, 6, 7, 8, 9] else draw_line(False)
        draw_line(True) if number in [0, 1, 2, 3, 4, 7, 8, 9] else draw_line(False)
        turtle.left(180)
        turtle.penup()
        turtle.fd(20)
    
    
    def draw_date(date):
        turtle.pencolor("red")
        for i in date:
            if i == "-":
                turtle.pencolor("green")
                turtle.write("年", font=("Arial", 18, "normal"))
                turtle.fd(40)
            elif i == '=':
                turtle.pencolor("green")
                turtle.write("月", font=("Arial", 18, "normal"))
                turtle.fd(40)
            elif i == '+':
                turtle.pencolor("green")
                turtle.write("日", font=("Arial", 18, "normal"))
                turtle.fd(40)
            else:
                turtle.pencolor("red")
                draw_digit(eval(i))
        for i in date:
            draw_digit(eval(i))
    
    
    def main():
        turtle.setup(800, 350, 200, 200)
        turtle.penup()
        turtle.fd(-300)
        turtle.pensize(5)
        draw_date(time.strftime("%Y-%m=%d+", time.gmtime()))
        turtle.hideturtle()
        turtle.done
    
    
    main()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月31日
  • 已采纳回答 10月23日
  • 创建了问题 10月23日

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答