@@ -134,7 +134,7 @@ simples, mas demonstra as possibilidades que se abrem com a implementação de a
134134[[ex_pythonic_deck]]
135135.Um baralho como uma sequência de cartas
136136====
137- [source, python3 ]
137+ [source, python ]
138138----
139139include::../code/01-data-model/frenchdeck.py[]
140140----
@@ -147,7 +147,7 @@ sem métodos próprios, como um registro de banco de dados.
147147Neste exemplo, a utilizamos para fornecer uma boa representação textual para as cartas em um baralho,
148148como mostra a sessão no console:
149149
150- [source, pycon ]
150+ [source, python ]
151151----
152152>>> beer_card = Card('7', 'diamonds')
153153>>> beer_card
@@ -161,7 +161,7 @@ uma instância de `FrenchDeck` responde à
161161função((("len() function")))((("functions", "len() function"))) `len()`,
162162devolvendo o número de cartas naquele baralho:
163163
164- [source, pycon ]
164+ [source, python ]
165165----
166166>>> deck = FrenchDeck()
167167>>> len(deck)
@@ -171,7 +171,7 @@ devolvendo o número de cartas naquele baralho:
171171Ler cartas específicas do baralho é fácil, graças ao método `+__getitem__+`.
172172Por exemplo, a primeira e a última carta:
173173
174- [source, pycon ]
174+ [source, python ]
175175----
176176>>> deck[0]
177177Card(rank='2', suit='spades')
@@ -183,7 +183,7 @@ Deveríamos criar um método para obter uma carta aleatória? Não é necessári
183183Python((("random.choice function"))) já tem uma função que devolve um item aleatório de uma sequência: `random.choice`.
184184Podemos usá-la em uma instância de `FrenchDeck`:
185185
186- [source, pycon ]
186+ [source, python ]
187187----
188188>>> from random import choice
189189>>> choice(deck)
@@ -211,7 +211,7 @@ nosso baralho suporta fatiamento automaticamente.
211211Podemos olhar as três primeiras cartas no topo de um baralho,
212212e depois pegar só os ases, iniciando com o índice 12 e pulando 13 cartas por vez:
213213
214- [source, pycon ]
214+ [source, python ]
215215----
216216>>> deck[:3]
217217[Card(rank='2', suit='spades'), Card(rank='3', suit='spades'),
@@ -224,7 +224,7 @@ Card(rank='A', suit='clubs'), Card(rank='A', suit='hearts')]
224224E como já temos o método especial `+__getitem__+`, nosso baralho é um objeto iterável,
225225ou seja, pode ser percorrido em um laço `for`:
226226
227- [source, pycon ]
227+ [source, python ]
228228----
229229>>> for card in deck: # doctest: +ELLIPSIS
230230... print(card)
@@ -236,7 +236,7 @@ Card(rank='4', suit='spades')
236236
237237Também podemos iterar sobre o baralho na ordem inversa:
238238
239- [source, pycon ]
239+ [source, python ]
240240----
241241>>> for card in reversed(deck): # doctest: +ELLIPSIS
242242... print(card)
@@ -268,7 +268,7 @@ o operador `in` realiza uma busca sequencial.
268268No nosso caso, `in` funciona com nossa classe `FrenchDeck` porque ela é iterável.
269269Veja a seguir:
270270
271- [source, pycon ]
271+ [source, python ]
272272----
273273>>> Card('Q', 'hearts') in deck
274274True
@@ -282,7 +282,7 @@ na ordem espadas (o mais alto), copas, ouros e paus (o mais baixo).
282282Aqui está uma função que ordena as cartas com essa regra,
283283devolvendo `0` para o 2 de paus e `51` para o Ás de espadas.
284284
285- [source, python3 ]
285+ [source, python ]
286286----
287287suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0)
288288
@@ -293,7 +293,7 @@ def spades_high(card):
293293
294294Podemos agora listar nosso baralho em ordem crescente de usando `spades_high` como critério de ordenação:
295295
296- [source, pycon ]
296+ [source, python ]
297297----
298298>>> for card in sorted(deck, key=spades_high): # doctest: +ELLIPSIS
299299... print(card)
@@ -402,7 +402,7 @@ Vamos começar a projetar a API para essa classe escrevendo uma sessão de conso
402402que depois podemos usar como um doctest.
403403O trecho a seguir testa a adição de vetores ilustrada na <<vectors_fig>>:
404404
405- [source, pycon ]
405+ [source, python ]
406406----
407407>>> v1 = Vector(2, 4)
408408>>> v2 = Vector(2, 1)
@@ -416,7 +416,7 @@ A((("abs built-in function")))((("functions", "abs built-in function"))) funçã
416416devolve o valor absoluto de números inteiros e de ponto flutuante, e a magnitude de números `complex`.
417417Então, por consistência, nossa API também usa `abs` para calcular a magnitude de um vetor:
418418
419- [source, pycon ]
419+ [source, python ]
420420----
421421>>> v = Vector(3, 4)
422422>>> abs(v)
@@ -427,7 +427,7 @@ Podemos((("* (star) operator")))((("multiplication, scalar")))((("star (&
427427também implementar o operador `*`, para realizar multiplicação escalar
428428(isto é, multiplicar um vetor por um número para obter um novo vetor de mesma direção e magnitude multiplicada):
429429
430- [source, pycon ]
430+ [source, python ]
431431----
432432>>> v * 3
433433Vector(9, 12)
@@ -556,7 +556,7 @@ da documentação da _Biblioteca Padrão de Python_.
556556====
557557Essa é uma implementação mais rápida de `+Vector.__bool__+`:
558558
559- [source, python3 ]
559+ [source, python ]
560560----
561561 def __bool__(self):
562562 return bool(self.x or self.y)
0 commit comments