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

输出结果如下所示,,可以看到本来应该是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,为什么它画完之后还是会自动退出呢?

因为你将日写成了月

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()