使用 Python turtle 从用户的邮政编码输入中打印邮政条形码
Use Python turtle to print postal bar code from user's zipcode input
我知道我在这里可能有很多错误,而且我只是一个初学者,但我完全不知道将输入的数字与 postal 条形码相对应的更简单方法是什么。我的 objective 在这里,或者我正在尝试做的,是输入用户的邮政编码,然后输入每个数字,将其转换成行(短和长),打印出条形码。
这就是我目前所拥有的。我已经根据 post 条码转换 table:
定义了每个数字及其对应的行
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放在代码的末尾吗?
谢谢:)
这是我要(重新)安排您的代码的下一步:
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()
应该是为其他人设计的,作为图书馆来解决他们未来的问题。
我知道我在这里可能有很多错误,而且我只是一个初学者,但我完全不知道将输入的数字与 postal 条形码相对应的更简单方法是什么。我的 objective 在这里,或者我正在尝试做的,是输入用户的邮政编码,然后输入每个数字,将其转换成行(短和长),打印出条形码。
这就是我目前所拥有的。我已经根据 post 条码转换 table:
定义了每个数字及其对应的行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放在代码的末尾吗?
谢谢:)
这是我要(重新)安排您的代码的下一步:
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()
应该是为其他人设计的,作为图书馆来解决他们未来的问题。