# 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))
```

```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ê!

```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)
```