---
# System prepended metadata

title: Grupo de estudos em Python - L-System 3 de abril

---

# Grupo de estudos em Python 

## L-System
### `hackmd.io/@sesc-av-paulista/estudos-em-python-3-abril`


- Python no Browser
    - pyodide
    - [pyp5js editor](https://abav.lugaralgum.com/pyp5js/py5mode/)
    - https://pyscript.net/
- Thonny + py5
    - https://abav.lugaralgum.com/como-instalar-py5/

- Referências L-System
    - https://abav.lugaralgum.com/material-aulas/Processing-Python-py5/LSystem.html
    - http://www.paulbourke.net/fractals/lsys/

Exportando animações
- https://abav.lugaralgum.com/material-aulas/Processing-Python-py5/exportar_animacoes.html
```python=


axioma = 'A'
regras = {
    'A': 'AB',
    'B': 'A',
    }
frase_inicial = axioma
for _ in range(15):
    nova_frase = ''
    for letra in frase_inicial:
        nova_frase = nova_frase + regras.get(letra)
    frase_inicial = nova_frase
    
print(len(nova_frase))

```

![image](https://hackmd.io/_uploads/rk7w88nTJl.png)

```python=
axioma = '-X'
regras = {
    "X": "F+[[X]-X]-F[-FX]+X",
    "F": "FF"
    }
angulo = 25  # em graus
passo = 1

def setup():
    size(700, 700)   
    frase_inicial = axioma
    for _ in range(8):
        nova_frase = ''
        for letra in frase_inicial:
            nova_frase = nova_frase + regras.get(letra, letra)
        frase_inicial = nova_frase
        
    print(len(nova_frase))
    translate(150, 650)
    for letra in nova_frase:
        if letra == 'F':
            line(0, 0, 0, -passo)
            translate(0, -passo)
        if letra == '+':
            rotate(radians(-angulo))
        if letra == '-':
            rotate(radians(angulo))
        if letra == '[':
            push_matrix()
        if letra == ']':
            pop_matrix()



```

Outra


```python=
axioma = 'F'
regras = {
    "F": " FF[+FF-F-FO][-FF+F+FO]"
    }
angulo = 22.5  # em graus
passo = 7

def setup():
    global nova_frase
    size(700, 700)   
    frase_inicial = axioma
    for _ in range(4):
        nova_frase = ''
        for letra in frase_inicial:
            nova_frase = nova_frase + regras.get(letra, letra)
        frase_inicial = nova_frase
        
    print(len(nova_frase))
    
def draw():
    background(200)
    translate(350, 650)
    for letra in nova_frase:
        if letra == 'F':
            line(0, 0, 0, -passo)
            translate(0, -passo)
        if letra == '+':
            rotate(radians(-angulo))
        if letra == '-':
            rotate(radians(angulo))
        if letra == '[':
            push_matrix()
        if letra == ']':
            pop_matrix()
        if letra == 'O':
            fill(255, 0, 0)  # vermelho
            no_stroke()
            circle(0, 0, passo / 2)
            stroke(0)


def key_pressed():
    global angulo
    if key == 'z':
        angulo = angulo - 1
    elif key == 'a':
        angulo = angulo + 1
    print(angulo)        


```

# em treis dê!


![out-ezgif.com-optimize](https://hackmd.io/_uploads/Sk8pRL36kl.gif)





```python=
axioma = 'F'
regras = {
    "F": " FF+[+FF-F-FO]-[-FF+F+FO]"
    }
angulo = 22.5  # em graus
passo = 7

def setup():
    global nova_frase
    size(700, 700, P3D)   
    frase_inicial = axioma
    for _ in range(4):
        nova_frase = ''
        for letra in frase_inicial:
            nova_frase = nova_frase + regras.get(letra, letra)
        frase_inicial = nova_frase
        
    print(len(nova_frase))
    
def draw():
    background(200)
    translate(350, 650)
    rotate_y(frame_count / 30)
    for letra in nova_frase:
        if letra == 'F':
            line(0, 0, 0, -passo)
            translate(0, -passo)
            rotate_y(angulo)
        if letra == '+':
            rotate(radians(-angulo))
        if letra == '-':
            rotate(radians(angulo))
        if letra == '[':
            push_matrix()
        if letra == ']':
            pop_matrix()
        if letra == 'O':
            fill(255, 0, 0)  # vermelho
            no_stroke()
            circle(0, 0, passo / 2)
            stroke(0)


def key_pressed():
    global angulo
    if key == 'z':
        angulo = angulo - 1
    elif key == 'a':
        angulo = angulo + 1
    print(angulo)        


```

