Skip to content

Correções nos links das soluções dos exercícios #18

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions docs/03-funcoes.md
Original file line number Diff line number Diff line change
@@ -542,7 +542,7 @@ do_twice(print_spam)

5. Defina uma função nova chamada `do_four` que receba um objeto de função e um valor e chame a função quatro vezes, passando o valor como um parâmetro. Deve haver só duas afirmações no corpo desta função, não quatro.

Solução: http://thinkpython2.com/code/do_four.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/do_four.py.


### Exercício 3.3
@@ -579,4 +579,5 @@ Solução: http://thinkpython2.com/code/do_four.py.

2. Escreva uma função que desenhe uma grade semelhante com quatro linhas e quatro colunas.

Solução: http://thinkpython2.com/code/grid.py. Crédito: Este exercício é baseado em outro apresentado por Oualline, em Practical C Programming, Third Edition, O’Reilly Media, 1997.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/grid.py.
Crédito: Este exercício é baseado em outro apresentado por Oualline, em Practical C Programming, Third Edition, O’Reilly Media, 1997.
12 changes: 6 additions & 6 deletions docs/04-caso-interface.md
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ Ele apresenta o módulo turtle, que permite criar imagens usando [_turtle graphi

Se já tiver instalado o Python no seu computador, você poderá executar os exemplos. Caso não, agora é uma boa hora para instalar. Publiquei instruções no site http://tinyurl.com/thinkpython2e.

Os exemplos de código deste capítulo estão disponíveis em http://thinkpython2.com/code/polygon.py.
Os exemplos de código deste capítulo estão disponíveis em https://github.com/AllenDowney/ThinkPython2/raw/master/code/polygon.py.

## 4.1 - Módulo turtle

@@ -376,7 +376,7 @@ Se as precondições forem satisfeitas e as pós-condições não forem, o probl

### Exercício 4.1

Baixe o código deste capítulo no site http://thinkpython2.com/code/polygon.py.
Baixe o código deste capítulo no site https://github.com/AllenDowney/ThinkPython2/raw/master/code/polygon.py.

1. Desenhe um diagrama da pilha que mostre o estado do programa enquanto executa circle (bob, radius). Você pode fazer a aritmética à mão ou acrescentar instruções print ao código.

@@ -389,7 +389,7 @@ Escreva um conjunto de funções adequadamente geral que possa desenhar flores c
![Figura 4.1 – Flores de tartaruga.](https://github.com/PenseAllen/PensePython2e/raw/master/fig/tnkp_0401.png)
<br>_Figura 4.1 – Flores de tartaruga._

Solução: http://thinkpython2.com/code/flower.py, também exige http://thinkpython2.com/code/polygon.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/flower.py, também exige https://github.com/AllenDowney/ThinkPython2/raw/master/code/polygon.py.

### Exercício 4.3

@@ -398,16 +398,16 @@ Escreva um conjunto de funções adequadamente geral que possa desenhar formas c
![Figura 4.2 – Tortas de tartaruga.](https://github.com/PenseAllen/PensePython2e/raw/master/fig/tnkp_0402.png)
<br>_Figura 4.2 – Tortas de tartaruga._

Solução: http://thinkpython2.com/code/pie.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/pie.py.


### Exercício 4.4

As letras do alfabeto podem ser construídas a partir de um número moderado de elementos básicos, como linhas verticais e horizontais e algumas curvas. Crie um alfabeto que possa ser desenhado com um número mínimo de elementos básicos e então escreva funções que desenhem as letras.

Você deve escrever uma função para cada letra, com os nomes draw\_a, draw\_b etc., e colocar suas funções em um arquivo chamado letters.py. Você pode baixar uma “máquina de escrever de turtle” no site http://thinkpython2.com/code/typewriter.py para ajudar a testar o seu código.
Você deve escrever uma função para cada letra, com os nomes draw\_a, draw\_b etc., e colocar suas funções em um arquivo chamado letters.py. Você pode baixar uma “máquina de escrever de turtle” no site https://github.com/AllenDowney/ThinkPython2/raw/master/code/typewriter.py para ajudar a testar o seu código.

Você pode ver uma solução no site http://thinkpython2.com/code/letters.py; ela também exige http://thinkpython2.com/code/polygon.py.
Você pode ver uma solução no site https://github.com/AllenDowney/ThinkPython2/raw/master/code/letters.py; ela também exige https://github.com/AllenDowney/ThinkPython2/raw/master/code/polygon.py.

### Exercício 4.5

2 changes: 1 addition & 1 deletion docs/05-cond-recur.md
Original file line number Diff line number Diff line change
@@ -543,6 +543,6 @@ A exceção é se x for menor que 3: neste caso, você pode desenhar apenas uma

2. Escreva uma função chamada snowflake que desenhe três curvas de Koch para fazer o traçado de um floco de neve.

        Solução: http://thinkpython2.com/code/koch.py.
        Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/koch.py.

3. A curva de Koch pode ser generalizada de vários modos. Veja exemplos em http://en.wikipedia.org/wiki/Koch\_snowflake e implemente o seu favorito.
4 changes: 2 additions & 2 deletions docs/06-funcoes-result.md
Original file line number Diff line number Diff line change
@@ -492,7 +492,7 @@ A função de Ackermann, A(m, n), é definida assim:

Veja http://en.wikipedia.org/wiki/Ackermann_function. Escreva uma função denominada ack que avalie a função de Ackermann. Use a sua função para avaliar `ack(3, 4)`, cujo resultado deve ser 125. O que acontece para valores maiores de m e n?

Solução: http://thinkpython2.com/code/ackermann.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/ackermann.py.

### Exercício 6.3

@@ -515,7 +515,7 @@ Veremos como funcionam no Capítulo 8.

2. Escreva uma função chamada `is_palindrome` que receba uma string como argumento e retorne True se for um palíndromo e False se não for. Lembre-se de que você pode usar a função integrada len para verificar o comprimento de uma string.

Solução: http://thinkpython2.com/code/palindrome_soln.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/palindrome_soln.py.

### Exercício 6.4

6 changes: 3 additions & 3 deletions docs/09-caso-palavras.md
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ Este capítulo apresenta o segundo estudo de caso que envolve solucionar quebra-

## 9.1 - Leitura de listas de palavras

Para os exercícios deste capítulo vamos usar uma lista de palavras em inglês. Há muitas listas de palavras disponíveis na internet, mas a mais conveniente ao nosso propósito é uma das listas de palavras disponibilizadas em domínio público por Grady Ward como parte do projeto lexical Moby (ver http://wikipedia.org/wiki/Moby\_Project). É uma lista de 113.809 palavras cruzadas oficiais; isto é, as palavras que se consideram válidas em quebra-cabeças de palavras cruzadas e outros jogos de palavras. Na coleção Moby, o nome do arquivo é 113809of.fic; você pode baixar uma cópia, com um nome mais simples como words.txt, de http://thinkpython2.com/code/words.txt.
Para os exercícios deste capítulo vamos usar uma lista de palavras em inglês. Há muitas listas de palavras disponíveis na internet, mas a mais conveniente ao nosso propósito é uma das listas de palavras disponibilizadas em domínio público por Grady Ward como parte do projeto lexical Moby (ver http://wikipedia.org/wiki/Moby\_Project). É uma lista de 113.809 palavras cruzadas oficiais; isto é, as palavras que se consideram válidas em quebra-cabeças de palavras cruzadas e outros jogos de palavras. Na coleção Moby, o nome do arquivo é 113809of.fic; você pode baixar uma cópia, com um nome mais simples como words.txt, de https://github.com/AllenDowney/ThinkPython2/raw/master/code/words.txt.

Este arquivo está em texto simples, então você pode abri-lo com um editor de texto, mas também pode lê-lo no Python. A função integrada open recebe o nome do arquivo como um parâmetro e retorna um objeto de arquivo que você pode usar para ler o arquivo.

@@ -255,7 +255,7 @@ Dê uma palavra com três letras duplas consecutivas. Vou dar exemplos de palavr

Escreva um programa que a encontre.

Solução: http://thinkpython2.com/code/cartalk1.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/cartalk1.py.

### Exercício 9.8

@@ -271,7 +271,7 @@ Aqui está outro quebra-cabeça do programa Car Talk (http://www.cartalk.com/con

Escreva um programa Python que teste todos os números de seis dígitos e imprima qualquer número que satisfaça essas condições.

Solução: http://thinkpython2.com/code/cartalk2.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/cartalk2.py.

### Exercício 9.9

12 changes: 6 additions & 6 deletions docs/10-listas.md
Original file line number Diff line number Diff line change
@@ -639,7 +639,7 @@ O uso descuidado de listas (e de outros objetos mutáveis) pode levar a longas h

## 10.15 - Exercícios

Você pode baixar as soluções para estes exercícios em http://thinkpython2.com/code/list\_exercises.py.
Você pode baixar as soluções para estes exercícios em https://github.com/AllenDowney/ThinkPython2/raw/master/code/list\_exercises.py.

### Exercício 10.1

@@ -707,13 +707,13 @@ Este exercício pertence ao assim chamado Paradoxo de aniversário, sobre o qual

Se há 23 alunos na sua sala, quais são as chances de dois deles fazerem aniversário no mesmo dia? Você pode estimar esta probabilidade gerando amostras aleatórias de 23 dias de aniversário e verificando as correspondências. Dica: você pode gerar aniversários aleatórios com a função randint no módulo random.

Se quiser, você pode baixar minha solução em http://thinkpython2.com/code/birthday.py.
Se quiser, você pode baixar minha solução em https://github.com/AllenDowney/ThinkPython2/raw/master/code/birthday.py.

### Exercício 10.9

Escreva uma função que leia o arquivo words.txt e construa uma lista com um elemento por palavra. Escreva duas versões desta função, uma usando o método append e outra usando a expressão `t = t + [x]`. Qual leva mais tempo para ser executada? Por quê?

Solução: http://thinkpython2.com/code/wordlist.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/wordlist.py.


### Exercício 10.10
@@ -728,19 +728,19 @@ Escreva uma função chamada in\_bisect que receba uma lista ordenada, um valor-

Ou você pode ler a documentação do módulo bisect e usá-lo!

Solução: http://thinkpython2.com/code/inlist.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/inlist.py.

### Exercício 10.11

Duas palavras são um “par inverso” se uma for o contrário da outra. Escreva um programa que encontre todos os pares inversos na lista de palavras.

Solução: http://thinkpython2.com/code/reverse_pair.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/reverse_pair.py.

### Exercício 10.12

Duas palavras “interligam-se” quando, ao tomarmos letras alternadas de cada uma, formamos uma palavra nova. Por exemplo, “shoe” e “cold” interligam-se para formar “schooled”.

Solução: http://thinkpython2.com/code/interlock.py. Crédito: este exercício foi inspirado por um exemplo em http://puzzlers.org.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/interlock.py. Crédito: este exercício foi inspirado por um exemplo em http://puzzlers.org.

1. Escreva um programa que encontre todos os pares de palavras que se interligam. Dica: não enumere todos os pares!

12 changes: 6 additions & 6 deletions docs/11-dicionarios.md
Original file line number Diff line number Diff line change
@@ -504,29 +504,29 @@ Se fez o Exercício 10.10, você pode comparar a velocidade desta implementaçã

Leia a documentação do método de dicionário setdefault e use-o para escrever uma versão mais concisa de invert\_dict.

Solução: http://thinkpython2.com/code/invert_dict.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/invert_dict.py.

### Exercício 11.3

Memorize a função de Ackermann do Exercício 6.2 e veja se a memorização permite avaliar a função com argumentos maiores. Dica: não.

Solução: http://thinkpython2.com/code/ackermann_memo.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/ackermann_memo.py.

### Exercício 11.4

Se fez o Exercício 10.7, você já tem uma função chamada has\_duplicates, que recebe uma lista como parâmetro e retorna True se houver algum objeto que aparece mais de uma vez na lista.

Use um dicionário para escrever uma versão mais rápida e simples de has\_duplicates.

Solução: http://thinkpython2.com/code/has_duplicates.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/has_duplicates.py.

### Exercício 11.5

Duas palavras são “pares rotacionados” se for possível rotacionar um deles e chegar ao outro (ver `rotate_word` no Exercício 8.5).

Escreva um programa que leia uma lista de palavras e encontre todos os pares rotacionados.

Solução: http://thinkpython2.com/code/rotate_pairs.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/rotate_pairs.py.

### Exercício 11.6

@@ -540,8 +540,8 @@ Mas há pelo menos uma palavra que Dan e eu conhecemos, que produz dois homófon

Você pode usar o dicionário do Exercício 11.1 para verificar se uma string está na lista de palavras.

Para verificar se duas palavras são homófonas, você pode usar o Dicionário de pronúncia CMU. Ele pode ser baixado em http://www.speech.cs.cmu.edu/cgi-bin/cmudict ou em http://thinkpython2.com/code/c06d. Você também pode baixar http://thinkpy thon2.com/code/pronounce.py, que tem uma função chamada `read_dictionary`, que lê o dicionário de pronúncia e retorna um dicionário de Python que mapeia cada palavra a uma string que descreve sua pronúncia primária.
Para verificar se duas palavras são homófonas, você pode usar o Dicionário de pronúncia CMU. Ele pode ser baixado em http://www.speech.cs.cmu.edu/cgi-bin/cmudict ou em https://github.com/AllenDowney/ThinkPython2/raw/master/code/c06d. Você também pode baixar http://thinkpy thon2.com/code/pronounce.py, que tem uma função chamada `read_dictionary`, que lê o dicionário de pronúncia e retorna um dicionário de Python que mapeia cada palavra a uma string que descreve sua pronúncia primária.

Escreva um programa que liste todas as palavras que resolvem o quebra-cabeça.

Solução: http://thinkpython2.com/code/homophone.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/homophone.py.
10 changes: 5 additions & 5 deletions docs/12-tuplas.md
Original file line number Diff line number Diff line change
@@ -395,7 +395,7 @@ Como tuplas são imutáveis, elas não fornecem métodos como `sort` e `reverse`

As listas, os dicionários e as tuplas são exemplos de estruturas de dados; neste capítulo estamos começando a ver estruturas de dados compostas, como as listas de tuplas ou dicionários que contêm tuplas como chaves e listas como valores. As estruturas de dados compostas são úteis, mas são propensas ao que chamo de erros de forma; isto é, erros causados quando uma estrutura de dados tem o tipo, tamanho ou estrutura incorretos. Por exemplo, se você estiver esperando uma lista com um número inteiro e eu der apenas o número inteiro (não em uma lista), não vai funcionar.

Para ajudar a depurar esses tipos de erro, escrevi um módulo chamado `structshape`, que fornece uma função, também chamada `structshape`, que recebe qualquer tipo de estrutura de dados como argumento e retorna uma string, que resume sua forma. Você pode baixá-la em http://thinkpython2.com/code/structshape.py.
Para ajudar a depurar esses tipos de erro, escrevi um módulo chamado `structshape`, que fornece uma função, também chamada `structshape`, que recebe qualquer tipo de estrutura de dados como argumento e retorna uma string, que resume sua forma. Você pode baixá-la em https://github.com/AllenDowney/ThinkPython2/raw/master/code/structshape.py.

Aqui está o resultado de uma lista simples:

@@ -475,7 +475,7 @@ Se estiver com problemas para monitorar suas estruturas de dados, o `structshape

Escreva uma função chamada `most_frequent` que receba uma string e exiba as letras em ordem decrescente de frequência. Encontre amostras de texto de vários idiomas diferentes e veja como a frequência das letras varia entre os idiomas. Compare seus resultados com as tabelas em http://en.wikipedia.org/wiki/Letter_frequencies.

Solução: http://thinkpython2.com/code/most_frequent.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/most_frequent.py.

### Exercício 12.2

@@ -498,13 +498,13 @@ Mais anagramas!

3. No Scrabble, um “bingo” é quando você joga todas as sete peças na sua estante, junto com uma peça no tabuleiro, para formar uma palavra de oito letras. Que coleção de oito letras forma o maior número possível de bingos? Dica: há sete.

Solução: http://thinkpython2.com/code/anagram_sets.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/anagram_sets.py.

### Exercício 12.3

Duas palavras formam um “par de metátese” se você puder transformar uma na outra trocando duas letras, por exemplo, “converse” e “conserve”. Escreva um programa que descubra todos os pares de metátese no dicionário. Dica: não teste todos os pares de palavras e não teste todas as trocas possíveis.

Solução: http://thinkpython2.com/code/metathesis.py. Crédito: este exercício foi inspirado por um exemplo em http://puzzlers.org.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/metathesis.py. Crédito: este exercício foi inspirado por um exemplo em http://puzzlers.org.

### Exercício 12.4

@@ -528,4 +528,4 @@ Este exercício é um pouco mais desafiador que a maioria, então aqui estão al

4. Para melhorar o desempenho do seu programa, você pode querer memorizar as palavras conhecidas por serem redutíveis.

Solução: http://thinkpython2.com/code/reducible.py.
Solução: https://github.com/AllenDowney/ThinkPython2/raw/master/code/reducible.py.
Loading