Можно ли использовать словари с командами?

пытался написать функцию с черепашей графикой используя словарь вместо ветвления

import turtle
t = turtle.Turtle()
d = {'f':t.fd(50), '+':t.lt(90)}
for i in range(4):
    d['f']
    d['+']

но в итоге он рисует лишь одну линию и поворачивает черепаху, и на этом всё. Можно ли вообще так использовать словарь или я ерундой занимаюсь?


Ответы (1 шт):

Автор решения: n1tr0xs

Так вы создаете словарь строка-результат функции.
Чтобы вызывать функции используйте lambda:

import turtle
t = turtle.Turtle()
d = {
    'f': lambda: t.fd(50),
    '+': lambda: t.lt(90),
}
for i in range(4):
    d['f']()
    d['+']()

Еще так можно передать заготовленной функции значение:

import turtle
t = turtle.Turtle()
d = {
    'f': lambda x: t.fd(x),
    '+': lambda x: t.lt(x),
}
for i in range(4):
    d['f'](50)
    d['+'](90)
→ Ссылка