Python用七段数码管绘制数字53然后下一行绘制时间怎么做?

Python用七段数码管绘制数字53然后下一行绘制时间怎么做?

可以使用 turtle 库来在 Python 中绘制七段数码管。同时,可以使用 datetime 模块获取当前时间。

下面是一个示例代码,用于在 Python 中使用七段数码管显示数字 53 并在下一行显示当前时间:

import turtle
import datetime

# 七段数码管的线段位置和状态
segments = [
    ((-50, 60), (50, 60)),  # top
    ((-50, 20), (-50, 60)),  # left-top
    ((50, 20), (50, 60)),  # right-top
    ((-50, 20), (50, 20)),  # middle
    ((-50, -20), (-50, 20)),  # left-bottom
    ((50, -20), (50, 20)),  # right-bottom
    ((-50, -60), (50, -60))  # bottom
]
segment_states = [
    (1, 1, 1, 0, 1, 1, 1),  # 0
    (0, 0, 1, 0, 0, 1, 0),  # 1
    (1, 0, 1, 1, 1, 0, 1),  # 2
    (1, 0, 1, 1, 0, 1, 1),  # 3
    (0, 1, 1, 1, 0, 1, 0),  # 4
    (1, 1, 0, 1, 0, 1, 1),  # 5
    (1, 1, 0, 1, 1, 1, 1),  # 6
    (1, 0, 1, 0, 0, 1, 0),  # 7
    (1, 1, 1, 1, 1, 1, 1),  # 8
    (1, 1, 1, 1, 0, 1, 1)   # 9
]

# 绘制七段数码管的一个线段
def draw_segment(p1, p2, state):
    turtle.penup()
    if state == 1:
        turtle.goto(p1)
        turtle.pendown()
        turtle.goto(p2)
        turtle.penup()

# 绘制数字
def draw_number(n):
    for i, segment in enumerate(segments):
        draw_segment(segment[0], segment[1], segment_states[n][i])

# 清除数字
def clear_number():
    turtle.clear()

# 绘制时间
def draw_time():
    now = datetime.datetime.now()
    time_str = now.strftime('%H:%M:%S')
    turtle.penup()
    turtle.goto(-120, -80)
    turtle.write(time_str, font=('Arial', 16, 'normal'))

# 初始化 turtle
turtle.setworldcoordinates(-200, -100, 200, 100)
turtle.speed(0)

# 绘制数字 53
draw_number(5)
turtle.goto(70, 60)
draw_number(3)

# 绘制当前时间
draw_time()

# 隐藏 turtle 画笔
turtle.hideturtle()

# 进入主循环
turtle.mainloop()


上面的代码中定义了一个 segments 列表,其中包含了七段数码管每个线段的位置信息。同时,还定义了一个 segment_states 列表,用于表示每个数字显示时各个线段的状态。

draw_segment() 函数用于绘制一个线段,根据 state 参数来决定线段是否要绘制出来。 draw_number() 函数使用 segments 和 segment_states 来绘制数字。

clear_number() 函数用于清除之前绘制的数字,draw_time() 函数用于获取当前时间并在画布上绘制出来。

在主函数中,我们先绘制数字 53,然后位置移动到下一行并调用 draw_time() 函数绘制当前时间。

运行上面的代码后,您应该可以看到一个窗口,其中绘制有数字 53 和当前时间。

您可以使用Python的turtle模块和七段数码管的图形绘制方法,实现数字53和时间的绘制。下面是一个简单的示例代码:

import turtle

# 设置画笔
turtle.speed(0)
turtle.pensize(5)
turtle.penup()
turtle.goto(-200, 0)
turtle.pendown()

# 绘制数字5
turtle.left(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(100)
turtle.right(90)

# 绘制数字3
turtle.penup()
turtle.forward(100)
turtle.pendown()
turtle.left(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.penup()
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(100)

# 绘制时间
import time
current_time = time.strftime("%H:%M:%S") # 获取当前时间
turtle.penup()
turtle.goto(-200, -150)
turtle.pendown()
for i in current_time:
    if i == ':':
        turtle.penup()
        turtle.forward(50)
        turtle.pendown()
    else:
        if int(i) in [2, 3, 4, 5, 6, 8, 9]:
            turtle.left(90)
            turtle.forward(100)
            turtle.right(90)
        if int(i) in [0, 4, 5, 6, 8, 9]:
            turtle.forward(50)
        if int(i) in [0, 1, 2, 3, 4, 7, 8, 9]:
            turtle.right(90)
            turtle.forward(50)
            turtle.left(90)
        if int(i) in [0, 2, 3, 5, 6, 8]:
            turtle.forward(50)
        if int(i) in [0, 1, 3, 4, 5, 6, 7, 8, 9]:
            turtle.right(90)
            turtle.forward(50)
            turtle.left(90)

turtle.hideturtle() # 隐藏画笔
turtle.done()

运行这个代码,您会看到在窗口中绘制了数字53和当前时间的七段数码管表示。注意,这个代码中使用了Python的time模块获取当前时间,并且需要按照时间的格式来绘制七段数码管。您可以根据需要修改这个代码来绘制其他数字和时间。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢