import%20marimo%0A%0A__generated_with%20%3D%20%220.8.3%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20return%20mo%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22At%C3%A9%20agora%20vimos%20tipos%20de%20dados%20b%C3%A1sicos%20como%20%60int%60%2C%20%60float%60%2C%20%60bool%60%2C%20%60None%60%2C%20%60str%60.%20Python%20tamb%C3%A9m%20tem%20tipos%20de%20dados%20ditos%20compostos%2C%20que%20s%C3%A3o%20formados%20pela%20composi%C3%A7%C3%A3o%20de%20outros%20tipos.%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%20Tuplas%0A%0A%20%20%20%20%20%20%20%20Tuplas%20s%C3%A3o%20generaliza%C3%A7%C3%B5es%20de%20duplas%2Ftriplas%2F%E2%80%A6%20de%20valores.%20Representamos%20tuplas%20usando%20par%C3%AAnteses%2C%20com%20cada%20elemento%20da%20tupla%20separado%20por%20v%C3%ADrgulas%3A%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20tupla_vazia%20%3D%20()%0A%20%20%20%20intervalo%20%3D%20(0%2C%201)%0A%20%20%20%20return%20intervalo%2C%20tupla_vazia%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Na%20verdade%20j%C3%A1%20conhecemos%20um%20pouco%20de%20tuplas%3A%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20x%2C%20y%20%3D%201%2C%202%0A%20%20%20%20y%2C%20x%20%3D%20x%2C%20y%0A%20%20%20%20x%2C%20y%0A%20%20%20%20return%20x%2C%20y%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Tamb%C3%A9m%20usamos%20tuplas%20para%20retornar%20m%C3%BAltiplos%20valores%20de%20uma%20fun%C3%A7%C3%A3o%3A%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20idiv(n%2C%20m)%3A%0A%20%20%20%20%20%20%20%20return%20n%20%2F%2F%20m%2C%20n%20%25%20m%20%20%23%20equivalente%20a%20(n%20%2F%2F%20m%2C%20n%20%25%20m)%0A%0A%20%20%20%20quociente%2C%20resto%20%3D%20idiv(10%2C%203)%0A%20%20%20%20quociente%2C%20resto%0A%20%20%20%20return%20idiv%2C%20quociente%2C%20resto%0A%0A%0A%40app.cell%0Adef%20__(idiv)%3A%0A%20%20%20%20res_div%20%3D%20idiv(15%2C%204)%0A%20%20%20%20res_div%20%20%23%20%3F%0A%20%20%20%20return%20res_div%2C%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20oneal_numbers%20%3D%20(216%2C%20147)%0A%20%20%20%20oneal_numbers%5B1%5D%0A%20%20%20%20return%20oneal_numbers%2C%0A%0A%0A%40app.cell%0Adef%20__(oneal_numbers)%3A%0A%20%20%20%20oneal_numbers%5B0%5D%20%3D%20215%20%20%23%20erro%3A%20n%C3%A3o%20podemos%20atribuir%20a%20um%20elemento%20de%20uma%20tupla%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20%23%20Tuplas%20podem%20ter%20elementos%20de%20v%C3%A1rios%20tipos%0A%20%20%20%20(lambda%20x%3A%20x%2B1%2C%201%2C%20None%2C%20'%CE%BB')%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%20Listas%0A%0A%20%20%20%20%20%20%20%20O%20tipo%20de%20dados%20lista%20%C3%A9%20intuitivo%3A%20podemos%20v%C3%AA-lo%20matematicamente%20como%20um%20vetor%20(ou%20matriz%20%241%5Ctimes%20n%24)%20ou%20como%20um%20mapeamento%20dos%20inteiros%20de%20%24%5B0%2C%20n)%24%20(os%20%C3%ADndices)%20para%20os%20elementos%20da%20lista%2C%20entre%20outras%20formas.%0A%0A%20%20%20%20%20%20%20%20Uma%20lista%20%C3%A9%20declarada%20por%20um%20par%20de%20colchetes%2C%20e%20seus%20elementos%20v%C3%A3o%20dentro%20dos%20colchetes%2C%20separados%20por%20v%C3%ADrgulas.%0A%0A%20%20%20%20%20%20%20%20Listas%20em%20geral%20cont%C3%A9m%20um%20tipo%20s%C3%B3%20(listas%20de%20inteiros%2C%20listas%20de%20tuplas%20de%20inteiros%20e%20booleanos%2C%20etc)%2C%20mas%20tamb%C3%A9m%20podem%20ser%20heterog%C3%AAneas%20(i.e.%2C%20com%20elementos%20de%20tipos%20diferentes).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20lista_vazia%20%3D%20%5B%5D%20%20%23%20uma%20lista%20vazia%0A%20%20%20%20l3%20%3D%20%5B0%2C%201%2C%202%5D%20%20%23%20uma%20lista%20de%20tr%C3%AAs%20elementos%0A%20%20%20%20lista_heterogenea%20%3D%20%5B1%2C%20%22um%22%2C%20(1%2C)%2C%20%5B1%2C%201%5D%5D%0A%20%20%20%20len(lista_vazia)%2C%20len(l3)%2C%20len(lista_heterogenea)%0A%20%20%20%20return%20l3%2C%20lista_heterogenea%2C%20lista_vazia%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Mesmo%20que%20listas%20tamb%C3%A9m%20usem%20colchetes%2C%20n%C3%A3o%20h%C3%A1%20confus%C3%A3o%20poss%C3%ADvel%20com%20a%20sintaxe%20de%20indexa%C3%A7%C3%A3o%20%E2%80%94%20at%C3%A9%20porque%20podemos%20indexar%20listas%3A%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(i)%3A%0A%20%20%20%20notas%20%3D%20%5B9.9%2C%208%2C%204.4%2C%207.3%2C%200%2C%206.1%2C%205%2C%208.5%5D%0A%20%20%20%20notas%5Bi%5D%20%3D%3D%200%20%20%23%20qual%20%C3%A9%20o%20%C3%ADndice%20i%20que%20faz%20a%20express%C3%A3o%20valer%20True%3F%0A%20%20%20%20return%20notas%2C%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20%5B1%2C%204%2C%202%2C%201%5D%5B4%5D%20%20%23%20Erro%20de%20indexa%C3%A7%C3%A3o%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Ao%20contr%C3%A1rio%20de%20tuplas%2C%20listas%20s%C3%A3o%20mut%C3%A1veis.%20Podemos%20modificar%20('mutar')%20seus%20elementos%3A%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20notas2%20%3D%20%5B9.9%2C%208%2C%204.4%2C%207.3%2C%200%2C%206.1%2C%205%2C%208.5%5D%0A%20%20%20%20notas2%5B5%5D%20%3D%200%0A%20%20%20%20notas2%0A%20%20%20%20return%20notas2%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Tamb%C3%A9m%20podemos%20extend%C3%AA-las%20ou%20diminu%C3%AD-las%3A%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20notas3%20%3D%20%5B9.9%2C%208%2C%204.4%2C%207.3%2C%200%2C%206.1%2C%205%2C%208.5%5D%0A%20%20%20%20list.append(notas3%2C%2010)%0A%20%20%20%20print(notas3%2C%20len(notas3))%0A%20%20%20%20return%20notas3%2C%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20notas4%20%3D%20%5B9.9%2C%208%2C%204.4%2C%207.3%2C%200%2C%206.1%2C%205%2C%208.5%5D%0A%20%20%20%20print(list.pop(notas4)%20%3D%3D%208.5)%0A%20%20%20%20print(notas4%2C%20len(notas4))%0A%20%20%20%20return%20notas4%2C%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20notas5%20%3D%20%5B9.9%2C%208%2C%204.4%2C%207.3%2C%200%2C%206.1%2C%205%2C%208.5%5D%0A%20%20%20%20list.extend(notas5%2C%20%5B1.2%2C%206.8%5D)%0A%20%20%20%20print(notas5%2C%20len(notas5))%0A%20%20%20%20return%20notas5%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Tamb%C3%A9m%20h%C3%A1%20outras%20fun%C3%A7%C3%B5es%20de%20listas%2C%20como%20%60list.sort%60.%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20notas6%20%3D%20%5B9.9%2C%208%2C%204.4%2C%207.3%2C%200%2C%206.1%2C%205%2C%208.5%5D%0A%20%20%20%20print(notas6)%0A%20%20%20%20list.sort(notas6)%0A%20%20%20%20print(notas6)%0A%20%20%20%20return%20notas6%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Python%20tamb%C3%A9m%20define%20o%20operador%20%60%2B%60%20para%20listas.%20Qual%20a%20diferen%C3%A7a%20da%20concatena%C3%A7%C3%A3o%20feita%20por%20%60%2B%60%20e%20por%20%60list.extend%60%3F%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20%5B1%2C%202%2C%203%5D%20%2B%20%5B4%2C%205%2C%206%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20%23%20Paramos%20aqui%20na%20aula%20do%20dia%2027%20de%20agosto%0A%20%20%20%20def%20append_plus(xs%2C%20x)%3A%0A%20%20%20%20%20%20%20%20pass%0A%0A%20%20%20%20def%20extend_plus(xs%2C%20ys)%3A%0A%20%20%20%20%20%20%20%20pass%0A%20%20%20%20return%20append_plus%2C%20extend_plus%0A%0A%0A%40app.cell%0Adef%20__(append_plus)%3A%0A%20%20%20%20linguagens_formais%20%3D%20%5B'Python'%5D%0A%20%20%20%20linguagens_naturais%20%3D%20%5B'Portugu%C3%AAs'%5D%0A%0A%20%20%20%20novas_linguagens_formais%20%3D%20append_plus(linguagens_formais%2C%20'SQL')%0A%20%20%20%20print(novas_linguagens_formais)%0A%20%20%20%20r%20%3D%20linguagens_naturais.append('Ingl%C3%AAs')%0A%20%20%20%20print(linguagens_formais%2C%20novas_linguagens_formais%2C%20linguagens_naturais%2C%20r)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20linguagens_formais%2C%0A%20%20%20%20%20%20%20%20linguagens_naturais%2C%0A%20%20%20%20%20%20%20%20novas_linguagens_formais%2C%0A%20%20%20%20%20%20%20%20r%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Mais%20sobre%20mutabilidade%20na%20%5BFAQ%20do%20Python%5D(https%3A%2F%2Fdocs.python.org%2F3%2Ffaq%2Fprogramming.html%23why-did-changing-list-y-also-change-list-x)%20e%20nas%20%5Bnotas%20de%20aula%5D(https%3A%2F%2Fwww.inf.puc-rio.br%2F~bclaro%2Fcourses%2Fpython-intro%2Flistas.html%23org7bc997d).%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%20Exerc%C3%ADcios%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%201%0A%0A%20%20%20%20%20%20%20%20Defina%20uma%20fun%C3%A7%C3%A3o%20que%20retorna%20o%20maior%20valor%20membro%20de%20uma%20lista.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20maximum(xs)%3A%0A%20%20%20%20%20%20%20%20pass%0A%0A%20%20%20%20maximum(%5B1%2C%204%2C%20-1%2C%205%2C%20100%2C%2042%2C%200%2C%20-26%5D)%20%3D%3D%20100%0A%20%20%20%20return%20maximum%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%202%0A%0A%20%20%20%20%20%20%20%20Defina%20fun%C3%A7%C3%A3o%20%60soma%60%2C%20que%20calcula%20a%20soma%20dos%20n%C3%BAmeros%20de%20uma%20lista.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20soma(xs)%3A%0A%20%20%20%20%20%20%20%20pass%0A%20%20%20%20return%20soma%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%203%0A%0A%20%20%20%20%20%20%20%20Defina%20a%20fun%C3%A7%C3%A3o%20%60collatz_seq%60%20que%20retorna%20a%20sequ%C3%AAncia%20de%20Collatz%20come%C3%A7ando%20no%20inteiro%20positivo%20passado%20como%20seu%20argumento%20e%20que%20termina%20em%201.%20Assuma%20que%20a%20sequ%C3%AAncia%20%C3%A9%20sempre%20finita%3B%20voc%C3%AA%20pode%20utilizar%20a%20fun%C3%A7%C3%A3o%20%60collatz_next%60%20j%C3%A1%20definida%20anteriormente.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20collatz_seq(n)%3A%0A%20%20%20%20%20%20%20%20pass%0A%20%20%20%20return%20collatz_seq%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%204%0A%0A%20%20%20%20%20%20%20%20Crie%20uma%20fun%C3%A7%C3%A3o%20que%20implementa%20o%20produto%20cartesiano%20dos%20elementos%20de%20duas%20listas%3B%20isto%20%C3%A9%2C%20a%20fun%C3%A7%C3%A3o%20deve%20receber%20duas%20listas%20e%20produzir%20uma%20nova%20lista%20que%20seja%20o%20produto%20cartesiano%20delas.%0A%0A%20%20%20%20%20%20%20%20Para%20fazer%20o%20produto%20em%20si%2C%20utilize%20tuplas%3B%20de%20modo%20que%20se%20%60n%60%20%C3%A9%20membro%20da%20primeira%20lista%20e%20%60m%60%20%C3%A9%20membro%20da%20segunda%20lista%2C%20ent%C3%A3o%20%60(m%2C%20n)%60%20%C3%A9%20membro%20da%20lista-resultado.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20produto_cartesiano(xs%2C%20ys)%3A%0A%20%20%20%20%20%20%20%20pass%0A%20%20%20%20return%20produto_cartesiano%2C%0A%0A%0A%40app.cell%0Adef%20__(produto_cartesiano)%3A%0A%20%20%20%20produto_cartesiano(%5B%5D%2C%20%5B3%2C4%5D)%20%3D%3D%20%5B%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%205%0A%0A%20%20%20%20%20%20%20%20Crie%20uma%20fun%C3%A7%C3%A3o%20que%20recebe%20dois%20argumentos%20%E2%80%94%20uma%20lista%20de%20pares%20cujos%20primeiros%20elementos%20s%C3%A3o%20strings%20e%20uma%20string%20%E2%80%94%2C%20e%20retorna%20o%20par%20correspondente%20%C3%A0%20string%20se%20ele%20existir%2C%20caso%20contr%C3%A1rio%20retorna%20%60None%60.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20get(xs%2C%20k)%3A%0A%20%20%20%20%20%20%20%20pass%0A%0A%20%20%20%20get(%5B(%22A1%22%2C%2072)%2C%20(%22A2%22%2C%2045)%2C%20(%22AS%22%2C%2084)%5D%2C%20%22A2%22)%20%3D%3D%2045%0A%20%20%20%20return%20get%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%206%0A%0A%20%20%20%20%20%20%20%20Defina%20a%20fun%C3%A7%C3%A3o%20%60filtro%60%20com%20dois%20par%C3%A2metros%3A%20uma%20fun%C3%A7%C3%A3o%20e%20uma%20lista.%20A%20fun%C3%A7%C3%A3o%20passada%20como%20argumento%20deve%20ter%20um%20par%C3%A2metro%2C%20e%20deve%20retornar%20um%20valor%20booleano%20(%60True%60%20ou%20%60False%60).%20A%20fun%C3%A7%C3%A3o%20%60filtro%60%20deve%20retornar%20uma%20nova%20lista%20cujos%20elementos%20s%C3%A3o%20os%20elementos%20da%20lista%20original%20que%20para%20os%20quais%20a%20fun%C3%A7%C3%A3o%20argumento%20retorna%20%60True%60.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20filtro(p%2C%20xs)%3A%0A%20%20%20%20%20%20%20%20pass%0A%0A%20%20%20%20filtro(lambda%20x%3A%20x%20%25%202%20%3D%3D%200%2C%20%5B1%2C2%2C3%2C4%5D)%20%3D%3D%20%5B2%2C%204%5D%0A%20%20%20%20return%20filtro%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%207%0A%0A%20%20%20%20%20%20%20%20Existem%20v%C3%A1rias%20formas%20de%20ordenar%20os%20elementos%20de%20uma%20lista.%20Uma%20delas%20%C3%A9%20a%20seguinte%3A%0A%0A%20%20%20%20%20%20%20%201.%20Se%20a%20lista%20s%C3%B3%20tem%20um%20elemento%2C%20n%C3%A3o%20precisamos%20fazer%20nada%20%E2%80%94%20ela%20j%C3%A1%20est%C3%A1%20ordenada.%0A%20%20%20%20%20%20%20%202.%20Se%20temos%20uma%20lista%20ordenada%20e%20um%20elemento%20fora%20de%20ordem%2C%20basta%20inserir%20o%20elemento%20na%20posi%C3%A7%C3%A3o%20correta%2C%20isto%20%C3%A9%2C%20aquela%20antes%20do%20primeiro%20elemento%20maior%20do%20que%20ele.%20Podemos%20usar%20a%20fun%C3%A7%C3%A3o%20%60list.insert%60%20para%20tal.%0A%0A%20%20%20%20%20%20%20%20**Obs.%201**%3A%20a%20solu%C3%A7%C3%A3o%20%C3%A9%20mais%20simples%20se%20voc%C3%AA%20retornar%20uma%20nova%20lista%20ao%20inv%C3%A9s%20de%20tentar%20ordenar%20a%20lista%20passada%20como%20argumento.%0A%0A%20%20%20%20%20%20%20%20**Obs.%202**%3A%20voc%C3%AA%20pode%20criar%20primeiro%20uma%20fun%C3%A7%C3%A3o%20que%20determina%20o%20%C3%ADndice%20do%20primeiro%20elemento%20de%20uma%20lista%20que%20%C3%A9%20maior%20do%20que%20um%20certo%20valor.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20insertion_sort(xs)%3A%0A%20%20%20%20%20%20%20%20pass%0A%0A%20%20%20%20insertion_sort(%5B38%2C%20983%2C%202%2C%203%2C%2087%2C%201%2C%20-1%2C%205%5D)%20%3D%3D%20%5B-1%2C%201%2C%202%2C%203%2C%205%2C%2038%2C%2087%2C%20983%5D%0A%20%20%20%20return%20insertion_sort%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%20Revis%C3%A3o%20de%20indenta%C3%A7%C3%A3o%0A%0A%20%20%20%20%20%20%20%20Exemplos%20da%20%5Brefer%C3%AAncia%20oficial%20do%20Python%5D(https%3A%2F%2Fdocs.python.org%2F3%2Freference%2Flexical_analysis.html%23indentation).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20perm(l)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20Compute%20the%20list%20of%20all%20permutations%20of%20l%0A%20%20%20%20%20%20%20%20if%20len(l)%20%3C%3D%201%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%5Bl%5D%0A%20%20%20%20%20%20%20%20r%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20for%20i%20in%20range(len(l))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20s%20%3D%20l%5B%3Ai%5D%20%2B%20l%5Bi%2B1%3A%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20p%20%3D%20perm(s)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20x%20in%20p%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20r.append(l%5Bi%3Ai%2B1%5D%20%2B%20x)%0A%20%20%20%20%20%20%20%20return%20r%0A%20%20%20%20return%20perm%2C%0A%0A%0A%40app.cell%0Adef%20__(perm)%3A%0A%20%20%20%20perm(%5B1%2C2%2C3%2C4%5D)%0A%20%20%20%20return%0A%0A%0Aapp._unparsable_cell(%0A%20%20%20%20r%22%22%22%0A%20%20%20%20%20def%20perm(l)%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20error%3A%20first%20line%20indented%0A%20%20%20%20for%20i%20in%20range(len(l))%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20error%3A%20not%20indented%0A%20%20%20%20%20%20%20%20s%20%3D%20l%5B%3Ai%5D%20%2B%20l%5Bi%2B1%3A%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20p%20%3D%20perm(l%5B%3Ai%5D%20%2B%20l%5Bi%2B1%3A%5D)%20%20%20%23%20error%3A%20unexpected%20indent%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20x%20in%20p%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20r.append(l%5Bi%3Ai%2B1%5D%20%2B%20x)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20r%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20error%3A%20inconsistent%20dedent%0A%20%20%20%20%22%22%22%2C%0A%20%20%20%20name%3D%22__%22%0A)%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A