使用pythonturtle从用户的zipcodeinpu打印邮政条形码

2024-04-18 21:39:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道我这里可能有很多错误,我只是一个初学者,但我完全不知道什么是一个更容易的方法来对应一个输入的数字邮政条码。我在这里的目标,或者说我正在尝试做的,就是输入用户的邮政编码,然后输入每个数字,将其转换成行(短和长),打印出一个条形码。你知道吗

这就是我目前所拥有的。我已经根据邮政条形码转换表定义了每个数字及其对应的行:

import turtle

t = turtle
t.pensize(2)
t.hideturtle()
t.left(90)
t.speed('fastest')

def print_zero():
    long()
    long()
    short()
    short()
    short()
    return

def print_one():
     short()
     short()
     short()
     long()
     long()

...

现在我一直这样做到print_nine()。 在print_nine()之后,我输入。。。你知道吗

def long():
    t.fd(14)
    t.up()
    t.bk(14)
    t.right(90)
    t.fd(6)
    t.down()

def short():
    t.fd(6)
    t.up()
    t.bk(6)
    t.right(90)
    t.fd(6)
    t.left(90)
    t.down()

t.up()
t.goto(0, -50)
t.down()

if digit == '0':
    print(print_zero)

elif digit == '1':
    print(print_one)

elif digit == '2':
    print(print_two)

elif digit == '3':
    print(print_three)

elif digit == '4':
    print(print_four)

elif digit == '5':
    print(print_five)

elif digit == '6':
    print(print_six)

elif digit == '7':
    print(print_seven)

elif digit == '8':
    print(print_eight)

elif digit == '9':
    print(print_nine)

else:
    print('Please print a valid zipcode.')

我还需要调用main(),我会把main放在代码的末尾吗?你知道吗

谢谢:)


Tags: def数字leftlongdown邮政shortprint
1条回答
网友
1楼 · 发布于 2024-04-18 21:39:09

下一步我将重新安排您的代码:

from turtle import Screen, Turtle

def short(t):
    t.forward(6)
    t.penup()
    t.backward(6)
    t.right(90)
    t.forward(6)
    t.left(90)
    t.pendown()

def long(t):
    t.forward(14)
    t.penup()
    t.backward(14)
    t.right(90)
    t.forward(6)
    t.left(90)
    t.down()

def print_zero(t):
    long(t)
    long(t)
    short(t)
    short(t)
    short(t)

def print_one(t):
    short(t)
    short(t)
    short(t)
    long(t)
    long(t)

# ...

DIGITS = {
    '0': print_zero,
    '1': print_one,
    # ...
}

if __name__ == '__main__':
    screen = Screen()
    screen.title('Zip Code to Bar Code')

    turtle = Turtle(visible=False)
    turtle.speed('fastest')
    turtle.pensize(2)
    turtle.left(90)

    turtle.penup()
    turtle.sety(-50)
    turtle.pendown()

    zipcode = screen.textinput('Zip Code', 'Please enter a valid zipcode:')

    if zipcode:
        for digit in zipcode:
            if digit in DIGITS:
                DIGITS[digit](turtle)

    screen.mainloop()

现在定义一个main()函数应该是一系列的小步骤;在代码的顶部定义一些常量,这样数字6、14、-50和2就不会出现在中间,并且可以很容易地进行调整;添加错误消息(例如,如果digit不在DIGITS中怎么办。)请记住,main()是您现在想要使用代码的方式,但是main()之外的所有内容都应该设计成供其他人用作库,以便将来解决他们的问题。你知道吗

enter image description here

相关问题 更多 >