Python Turtle:我想创建一个函数来执行另一个函数,具体取决于之前执行的函数

时间:2015-09-29 15:21:01

标签: python turtle-graphics

我使用海龟绘制我的名字,每个字母都有一堆不同的功能

像这样(对于字母r)

def letter_r(t):

    def letter_r_top(t):
        turtle.lt(90)
        turtle.fd(150)
        turtle.rt(90)
        turtle.circle(-37.5,180)
        turtle.lt(130)

    def letter_r_leg(t):
        csquare = ((75**2) + (37.5**2)) 
        sidec = math.sqrt(csquare)
        turtle.fd(sidec)

    letter_r_top(rob)
    letter_r_leg(rob)

在每封信之后,我需要将乌龟移动到正确的位置以设置下一个字母。因为每个字母都是不同的大小,我需要根据前一个字母的内容进行自定义移动,但我不想为每个字母制作单独的函数。

在我的代码结束时,我有正确的顺序调用函数列表来拼写我的名字

 letter_t(rob)
 letter_setup(rob)
 letter_r(rob)
 letter_setup(rob)
 .....

有没有办法让我可以做这样的事情,这样我只需要1个设置功能。(不是真正的代码,只是对我思考的概念化

def letter_setup(t):
    if previously executed function A 
        turtle.fd(75)
    if previously executed function B 
        turtle.fd(75)
        turtle.lt(90)
    if previously executed function C
        turtle.fd(75)
        turtle.lt(90)   

2 个答案:

答案 0 :(得分:1)

为什么不在上一封信末尾的下一个字母移动到正确的位置?

答案 1 :(得分:-1)

也许有更好的方法可以做到这一点,但是你可以创建一个变量last_function_called,并且在每个函数中你给它一个不同的值然后你就会知道最后一个被调用的是:

last_function_called = NONE;

def function1():
    last_function_called = FUNCTION1
    blablabla

...

if (last_function_called == FUNCTION1):
    call another one

之前当然是这样的:

NONE = 0
FUNCTION1 = 1
FUNCTION2 = 2
ect...