使Python turtle命令更小/comp

2024-05-16 02:56:05 发布

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

如何使我的项目代码更小?这是一个巨大的定义为我的刽子手图形。你知道吗

def joonista_mees(valede_pakkumiste_arv):
    if valede_pakkumiste_arv == 0:
        ht()
        up()
        right(90)
        forward(150)
        right(90)
        forward(30)
        right(180)
        down()
        forward(200)
        back(170)
        left(90)
        forward(150)
        right(90)
        forward(100)
        right(90)
    if valede_pakkumiste_arv == 1:
        forward(15)
        right(90)
        circle(15)
        left(90)
        up()
        forward(30)
        down()
    if valede_pakkumiste_arv == 2:
        forward(45)
        backward(45)
        right(45)
        forward(20)
        backward(20)
        left(90)
    if valede_pakkumiste_arv == 3:
        forward(20)
        backward(20)
        right(45)
        forward(45)
        right(30)
    if valede_pakkumiste_arv == 4:
        forward(45)
        backward(45)
        left(60)
    if valede_pakkumiste_arv == 5:
        forward(45)
        backward(45)
        right(30)
        up()
        backward(67)
    if valede_pakkumiste_arv == 6:
        right(90)
        forward(3)
        right(45)
        down()
        forward(3)
        backward(6)
        forward(3)
        right(90)
        forward(3)
        backward(6)
        forward(3)
        right(45)
        up()
        forward(6)
        left(45)
        down()
        forward(3)
        backward(6)
        forward(3)
        right(90)
        forward(3)
        backward(7)

有什么方法可以让这个更小巧?我能把几个命令写进一行吗?我使用的是python3.3,这是我项目的一部分,我真的需要一些帮助。如果你不能把它变小就好了。。。但我只想知道有没有办法。你知道吗


Tags: 项目代码right图形if定义leftarv
1条回答
网友
1楼 · 发布于 2024-05-16 02:56:05

你可以为一种小型语言编写一个简单的解释器。例如,您可以编码

forward(3)
right(90)
forward(3)
backward(7)

在字符串中作为dostring = "f 3 r 90 f 3 b 7"

口译员可能看起来像:

def interpret( dostring ):
     tokens = dostring.split()
     for command_id in range(0, len(tokens), 2):
             command = tokens[command_id]
             param = int(tokens[command_id+1])
             if command == "f":
                 forward( param )
             elif command == "b":
                 backward( param )
             elif command == "r":
                 right(param)
             else:
                 print("Unknown command: %s" % command)

然后你就打电话:

interpret("f 3 r 90 f 3 b 7")

相关问题 更多 >