# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2001-2025, Python Software Foundation
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR , YEAR.
#
# Translators:
# Rafael Fontenelle , 2025
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.12\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-25 15:50+0000\n"
"PO-Revision-Date: 2025-07-18 19:59+0000\n"
"Last-Translator: Rafael Fontenelle , 2025\n"
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/python-doc/"
"teams/5390/pt_BR/)\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % "
"1000000 == 0 ? 1 : 2;\n"
#: ../../tutorial/stdlib2.rst:5
msgid "Brief Tour of the Standard Library --- Part II"
msgstr "Um breve passeio pela biblioteca padrão --- parte II"
#: ../../tutorial/stdlib2.rst:7
msgid ""
"This second tour covers more advanced modules that support professional "
"programming needs. These modules rarely occur in small scripts."
msgstr ""
"Este segundo passeio apresenta alguns módulos avançados que atendem "
"necessidades de programação profissional. Estes módulos raramente aparecem "
"em scripts pequenos."
#: ../../tutorial/stdlib2.rst:14
msgid "Output Formatting"
msgstr "Formatando a saída"
#: ../../tutorial/stdlib2.rst:16
msgid ""
"The :mod:`reprlib` module provides a version of :func:`repr` customized for "
"abbreviated displays of large or deeply nested containers::"
msgstr ""
"O módulo :mod:`reprlib` fornece uma versão de :func:`repr` personalizado "
"para exibições abreviadas de contêineres grandes ou profundamente aninhados::"
#: ../../tutorial/stdlib2.rst:19
msgid ""
">>> import reprlib\n"
">>> reprlib.repr(set('supercalifragilisticexpialidocious'))\n"
"\"{'a', 'c', 'd', 'e', 'f', 'g', ...}\""
msgstr ""
">>> import reprlib\n"
">>> reprlib.repr(set('supercalifragilisticexpialidoce'))\n"
"\"{'a', 'c', 'd', 'e', 'f', 'g', ...}\""
#: ../../tutorial/stdlib2.rst:23
msgid ""
"The :mod:`pprint` module offers more sophisticated control over printing "
"both built-in and user defined objects in a way that is readable by the "
"interpreter. When the result is longer than one line, the \"pretty printer\" "
"adds line breaks and indentation to more clearly reveal data structure::"
msgstr ""
"O módulo :mod:`pprint` oferece um controle mais sofisticado na exibição "
"tanto de objetos embutidos quanto aqueles criados pelo usuário de maneira "
"que fique legível para o interpretador. Quando o resultado é maior que uma "
"linha, o \"pretty printer\" acrescenta quebras de linha e indentação para "
"revelar as estruturas de maneira mais clara::"
#: ../../tutorial/stdlib2.rst:28
msgid ""
">>> import pprint\n"
">>> t = [[[['black', 'cyan'], 'white', ['green', 'red']], [['magenta',\n"
"... 'yellow'], 'blue']]]\n"
"...\n"
">>> pprint.pprint(t, width=30)\n"
"[[[['black', 'cyan'],\n"
" 'white',\n"
" ['green', 'red']],\n"
" [['magenta', 'yellow'],\n"
" 'blue']]]"
msgstr ""
">>> import pprint\n"
">>> t = [[[['preto', 'ciano'], 'branco', ['verde', 'vermelho']], "
"[['magenta',\n"
"... 'amarelo'], 'azul']]]\n"
">>>\n"
">>> pprint.pprint(t, width=30)\n"
"[[[['preto', 'ciano'],\n"
" 'branco',\n"
" ['verde', 'vermelho']],\n"
" [['magenta', 'amarelo'],\n"
" 'azul']]]"
#: ../../tutorial/stdlib2.rst:39
msgid ""
"The :mod:`textwrap` module formats paragraphs of text to fit a given screen "
"width::"
msgstr ""
"O módulo :mod:`textwrap` formata parágrafos de texto para que caibam em uma "
"dada largura de tela::"
#: ../../tutorial/stdlib2.rst:42
msgid ""
">>> import textwrap\n"
">>> doc = \"\"\"The wrap() method is just like fill() except that it "
"returns\n"
"... a list of strings instead of one big string with newlines to separate\n"
"... the wrapped lines.\"\"\"\n"
"...\n"
">>> print(textwrap.fill(doc, width=40))\n"
"The wrap() method is just like fill()\n"
"except that it returns a list of strings\n"
"instead of one big string with newlines\n"
"to separate the wrapped lines."
msgstr ""
">>> import textwrap\n"
">>> doc = \"\"\"O método wrap() é como fill(), exceto que ele retorna\n"
"... uma lista de strings em vez de uma string grande com quebras\n"
"... de linha para separar as linhas quebradas.\"\"\"\n"
"...\n"
">>> print(textwrap.fill(doc, width=40))\n"
"O método wrap() é como fill(), exceto\n"
"que ele retorna uma lista de strings em\n"
"vez de uma string grande com quebras de\n"
"linha para separar as linhas quebradas."
#: ../../tutorial/stdlib2.rst:53
msgid ""
"The :mod:`locale` module accesses a database of culture specific data "
"formats. The grouping attribute of locale's format function provides a "
"direct way of formatting numbers with group separators::"
msgstr ""
"O módulo :mod:`locale` acessa uma base de dados de formatos específicos a "
"determinada cultura. O atributo de agrupamento da função \"format\" oferece "
"uma forma direta de formatar números com separadores de grupo::"
#: ../../tutorial/stdlib2.rst:57
msgid ""
">>> import locale\n"
">>> locale.setlocale(locale.LC_ALL, 'English_United States.1252')\n"
"'English_United States.1252'\n"
">>> conv = locale.localeconv() # get a mapping of conventions\n"
">>> x = 1234567.8\n"
">>> locale.format_string(\"%d\", x, grouping=True)\n"
"'1,234,567'\n"
">>> locale.format_string(\"%s%.*f\", (conv['currency_symbol'],\n"
"... conv['frac_digits'], x), grouping=True)\n"
"'$1,234,567.80'"
msgstr ""
">>> import locale\n"
">>> locale.setlocale(locale.LC_ALL, 'English_United States.1252')\n"
"'English_United States.1252'\n"
">>> conv = locale.localeconv() # obtém mapeamento de convenções\n"
">>> x = 1234567.8\n"
">>> locale.format_string(\"%d\", x, grouping=True)\n"
"'1,234,567'\n"
">>> locale.format_string(\"%s%.*f\", (conv['currency_symbol'],\n"
"... conv['frac_digits'], x), grouping=True)\n"
"'$1,234,567.80'"
#: ../../tutorial/stdlib2.rst:72
msgid "Templating"
msgstr "Usando templates"
#: ../../tutorial/stdlib2.rst:74
msgid ""
"The :mod:`string` module includes a versatile :class:`~string.Template` "
"class with a simplified syntax suitable for editing by end-users. This "
"allows users to customize their applications without having to alter the "
"application."
msgstr ""
"módulo :mod:`string` inclui a versátil classe :class:`Template` com uma "
"sintaxe simplificada, adequada para ser editada por usuários finais. Isso "
"permite que usuários personalizem suas aplicações sem a necessidade de "
"alterar a aplicação."
#: ../../tutorial/stdlib2.rst:78
msgid ""
"The format uses placeholder names formed by ``$`` with valid Python "
"identifiers (alphanumeric characters and underscores). Surrounding the "
"placeholder with braces allows it to be followed by more alphanumeric "
"letters with no intervening spaces. Writing ``$$`` creates a single escaped "
"``$``::"
msgstr ""
"Em um template são colocadas marcações indicando o local onde o texto "
"variável deve ser inserido. Uma marcação é formada por ``$`` seguido de um "
"identificador Python válido (caracteres alfanuméricos e underscores). "
"Envolvendo-se o identificador da marcação entre chaves, permite que ele seja "
"seguido por mais caracteres alfanuméricos sem a necessidade de espaços. "
"Escrevendo-se ``$$`` cria-se um único ``$``::"
#: ../../tutorial/stdlib2.rst:83
msgid ""
">>> from string import Template\n"
">>> t = Template('${village}folk send $$10 to $cause.')\n"
">>> t.substitute(village='Nottingham', cause='the ditch fund')\n"
"'Nottinghamfolk send $10 to the ditch fund.'"
msgstr ""
">>> from string import Template\n"
">>> t = Template('O povo de ${vila} envia $$10 para $causa.')\n"
">>> t.substitute(vila='Nottingham', causa='o fundo de recuperação')\n"
"'O povo de Nottingham envia $10 para o fundo de recuperação.'"
#: ../../tutorial/stdlib2.rst:88
msgid ""
"The :meth:`~string.Template.substitute` method raises a :exc:`KeyError` when "
"a placeholder is not supplied in a dictionary or a keyword argument. For "
"mail-merge style applications, user supplied data may be incomplete and the :"
"meth:`~string.Template.safe_substitute` method may be more appropriate --- "
"it will leave placeholders unchanged if data is missing::"
msgstr ""
"O método :meth:`substitute` levanta uma exceção :exc:`KeyError` quando o "
"identificador de uma marcação não é fornecido em um dicionário ou em um "
"argumento nomeado (*keyword argument*). Para aplicações que podem receber "
"dados incompletos fornecidos pelo usuário, o método :meth:`safe_substitute` "
"pode ser mais apropriado --- deixará os marcadores intactos se os dados "
"estiverem faltando::"
#: ../../tutorial/stdlib2.rst:94
msgid ""
">>> t = Template('Return the $item to $owner.')\n"
">>> d = dict(item='unladen swallow')\n"
">>> t.substitute(d)\n"
"Traceback (most recent call last):\n"
" ...\n"
"KeyError: 'owner'\n"
">>> t.safe_substitute(d)\n"
"'Return the unladen swallow to $owner.'"
msgstr ""
">>> t = Template('Devolva $item para $dono.')\n"
">>> d = dict(item='a andorinha descarregada')\n"
">>> t.substitute(d)\n"
"Traceback (most recent call last):\n"
" ...\n"
"KeyError: 'dono'\n"
">>> t.safe_substitute(d)\n"
"'Devolva a andorinha descarregada para $dono.'"
#: ../../tutorial/stdlib2.rst:103
msgid ""
"Template subclasses can specify a custom delimiter. For example, a batch "
"renaming utility for a photo browser may elect to use percent signs for "
"placeholders such as the current date, image sequence number, or file "
"format::"
msgstr ""
"Subclasses de Template podem especificar um delimitador personalizado. Por "
"exemplo, um utilitário para renomeação em lote de fotos pode usar o sinal de "
"porcentagem para marcações como a data atual, número sequencial da imagem ou "
"formato do aquivo::"
#: ../../tutorial/stdlib2.rst:107
msgid ""
">>> import time, os.path\n"
">>> photofiles = ['img_1074.jpg', 'img_1076.jpg', 'img_1077.jpg']\n"
">>> class BatchRename(Template):\n"
"... delimiter = '%'\n"
"...\n"
">>> fmt = input('Enter rename style (%d-date %n-seqnum %f-format): ')\n"
"Enter rename style (%d-date %n-seqnum %f-format): Ashley_%n%f\n"
"\n"
">>> t = BatchRename(fmt)\n"
">>> date = time.strftime('%d%b%y')\n"
">>> for i, filename in enumerate(photofiles):\n"
"... base, ext = os.path.splitext(filename)\n"
"... newname = t.substitute(d=date, n=i, f=ext)\n"
"... print('{0} --> {1}'.format(filename, newname))\n"
"\n"
"img_1074.jpg --> Ashley_0.jpg\n"
"img_1076.jpg --> Ashley_1.jpg\n"
"img_1077.jpg --> Ashley_2.jpg"
msgstr ""
">>> import time, os.path\n"
">>> arquivos_fotos = ['img_1074.jpg', 'img_1076.jpg', 'img_1077.jpg']\n"
">>> class RenomeiaEmLote(Template):\n"
"... delimiter = '%'\n"
"...\n"
">>> formato = input('Informe o estilo de renomeação (%d-data %n-sequencia %f-"
"formato): ')\n"
"Informe o estilo de renomeação (%d-data %n-sequencia %f-formato): "
"Ashley_%n%f\n"
"\n"
">>> t = RenomeiaEmLote(formato)\n"
">>> data = time.strftime('%d%b%y')\n"
">>> for i, nome_arquivo in enumerate(arquivos_fotos):\n"
"... base, extensão = os.path.splitext(nome_arquivo)\n"
"... novo_nome = t.substitute(d=data, n=i, f=extensão)\n"
"... print('{0} --> {1}'.format(nome_arquivo, novo_nome))\n"
"\n"
"img_1074.jpg --> Ashley_0.jpg\n"
"img_1076.jpg --> Ashley_1.jpg\n"
"img_1077.jpg --> Ashley_2.jpg"
#: ../../tutorial/stdlib2.rst:126
msgid ""
"Another application for templating is separating program logic from the "
"details of multiple output formats. This makes it possible to substitute "
"custom templates for XML files, plain text reports, and HTML web reports."
msgstr ""
"Outra aplicação para templates é separar a lógica da aplicação dos detalhes "
"de múltiplos formatos de saída. Assim é possível usar templates "
"personalizados para gerar arquivos XML, relatórios em texto puro e "
"relatórios web em HTML."
#: ../../tutorial/stdlib2.rst:134
msgid "Working with Binary Data Record Layouts"
msgstr "Trabalhando com formatos binários de dados"
#: ../../tutorial/stdlib2.rst:136
msgid ""
"The :mod:`struct` module provides :func:`~struct.pack` and :func:`~struct."
"unpack` functions for working with variable length binary record formats. "
"The following example shows how to loop through header information in a ZIP "
"file without using the :mod:`zipfile` module. Pack codes ``\"H\"`` and "
"``\"I\"`` represent two and four byte unsigned numbers respectively. The "
"``\"<\"`` indicates that they are standard size and in little-endian byte "
"order::"
msgstr ""
"O módulo :mod:`struct` oferece as funções :func:`pack` e :func:`unpack` para "
"trabalhar com registros binários de tamanho variável. O exemplo a seguir "
"mostra como iterar através do cabeçalho de informação num aquivo ZIP sem "
"usar o módulo :mod:`zipfile`. Os códigos de empacotamento ``\"H\"`` e "
"``\"I\"`` representam números sem sinal de dois e quatro bytes "
"respectivamente. O ``\"<\"`` indica que os números têm tamanho padrão e são "
"little-endian (bytes menos significativos primeiro)::"
#: ../../tutorial/stdlib2.rst:144
msgid ""
"import struct\n"
"\n"
"with open('myfile.zip', 'rb') as f:\n"
" data = f.read()\n"
"\n"
"start = 0\n"
"for i in range(3): # show the first 3 file headers\n"
" start += 14\n"
" fields = struct.unpack('` para "
"eliminar ciclos). A memória ocupada por um objeto é liberada logo depois da "
"última referência a ele ser eliminada."
#: ../../tutorial/stdlib2.rst:255
msgid ""
"This approach works fine for most applications but occasionally there is a "
"need to track objects only as long as they are being used by something else. "
"Unfortunately, just tracking them creates a reference that makes them "
"permanent. The :mod:`weakref` module provides tools for tracking objects "
"without creating a reference. When the object is no longer needed, it is "
"automatically removed from a weakref table and a callback is triggered for "
"weakref objects. Typical applications include caching objects that are "
"expensive to create::"
msgstr ""
"Essa abordagem funciona bem para a maioria das aplicações, mas "
"ocasionalmente surge a necessidade de rastrear objetos apenas enquanto estão "
"sendo usados por algum outro. Infelizmente rastreá-los cria uma referência, "
"e isso os fazem permanentes. O módulo :mod:`weakref` oferece ferramentas "
"para rastrear objetos sem criar uma referência. Quando o objeto não é mais "
"necessário, ele é automaticamente removido de uma tabela de referências "
"fracas e uma chamada (*callback*) é disparada. Aplicações típicas incluem "
"armazenamento em cache de objetos que são muito custosos para criar::"
#: ../../tutorial/stdlib2.rst:263
msgid ""
">>> import weakref, gc\n"
">>> class A:\n"
"... def __init__(self, value):\n"
"... self.value = value\n"
"... def __repr__(self):\n"
"... return str(self.value)\n"
"...\n"
">>> a = A(10) # create a reference\n"
">>> d = weakref.WeakValueDictionary()\n"
">>> d['primary'] = a # does not create a reference\n"
">>> d['primary'] # fetch the object if it is still alive\n"
"10\n"
">>> del a # remove the one reference\n"
">>> gc.collect() # run garbage collection right away\n"
"0\n"
">>> d['primary'] # entry was automatically removed\n"
"Traceback (most recent call last):\n"
" File \"\", line 1, in \n"
" d['primary'] # entry was automatically removed\n"
" File \"C:/python312/lib/weakref.py\", line 46, in __getitem__\n"
" o = self.data[key]()\n"
"KeyError: 'primary'"
msgstr ""
">>> import weakref, gc\n"
">>> class A:\n"
"... def __init__(self, valor):\n"
"... self.valor = valor\n"
"... def __repr__(self):\n"
"... return str(self.valor)\n"
"...\n"
">>> a = A(10) # cria uma referência\n"
">>> d = weakref.WeakValueDictionary()\n"
">>> d['primaria'] = a # não cria uma referência\n"
">>> d['primaria'] # busca o objeto se ele estiver ativo\n"
"10\n"
">>> del a # remove a referência criada\n"
">>> gc.collect() # roda imediatamente a coleta de lixo\n"
"0\n"
">>> d['primaria'] # o acesso foi automaticamente removido\n"
"Traceback (most recent call last):\n"
" File \"\", line 1, in \n"
" d['primaria'] # o acesso foi automaticamente removido\n"
" File \"C:/python312/lib/weakref.py\", line 46, in __getitem__\n"
" o = self.data[key]()\n"
"KeyError: 'primaria'"
#: ../../tutorial/stdlib2.rst:290
msgid "Tools for Working with Lists"
msgstr "Ferramentas para trabalhar com listas"
#: ../../tutorial/stdlib2.rst:292
msgid ""
"Many data structure needs can be met with the built-in list type. However, "
"sometimes there is a need for alternative implementations with different "
"performance trade-offs."
msgstr ""
"Muitas necessidades envolvendo estruturas de dados podem ser satisfeitas com "
"o tipo embutido lista. Entretanto, algumas vezes há uma necessidade por "
"implementações alternativas que sacrificam algumas facilidades em nome de "
"melhor desempenho."
#: ../../tutorial/stdlib2.rst:296
msgid ""
"The :mod:`array` module provides an :class:`~array.array` object that is "
"like a list that stores only homogeneous data and stores it more compactly. "
"The following example shows an array of numbers stored as two byte unsigned "
"binary numbers (typecode ``\"H\"``) rather than the usual 16 bytes per entry "
"for regular lists of Python int objects::"
msgstr ""
"O módulo :mod:`array` oferece uma classe :class:`~array.array`, semelhante a "
"uma lista, mas que armazena apenas dados homogêneos e de maneira mais "
"compacta. O exemplo a seguir mostra um vetor de números armazenados como "
"números binários de dois bytes sem sinal (código de tipo ``\"H\"``) ao invés "
"dos 16 bytes usuais para cada item em uma lista de ``int``::"
#: ../../tutorial/stdlib2.rst:302
msgid ""
">>> from array import array\n"
">>> a = array('H', [4000, 10, 700, 22222])\n"
">>> sum(a)\n"
"26932\n"
">>> a[1:3]\n"
"array('H', [10, 700])"
msgstr ""
">>> from array import array\n"
">>> a = array('H', [4000, 10, 700, 22222])\n"
">>> sum(a)\n"
"26932\n"
">>> a[1:3]\n"
"array('H', [10, 700])"
#: ../../tutorial/stdlib2.rst:309
msgid ""
"The :mod:`collections` module provides a :class:`~collections.deque` object "
"that is like a list with faster appends and pops from the left side but "
"slower lookups in the middle. These objects are well suited for implementing "
"queues and breadth first tree searches::"
msgstr ""
"O módulo :mod:`collections` oferece um objeto :class:`~collections.deque` "
"que comporta-se como uma lista mas com *appends* e *pops* pela esquerda mais "
"rápidos, porém mais lento ao percorrer o meio da sequência. Esses objetos "
"são adequados para implementar filas e buscas em amplitude em árvores de "
"dados::"
#: ../../tutorial/stdlib2.rst:314
msgid ""
">>> from collections import deque\n"
">>> d = deque([\"task1\", \"task2\", \"task3\"])\n"
">>> d.append(\"task4\")\n"
">>> print(\"Handling\", d.popleft())\n"
"Handling task1"
msgstr ""
">>> from collections import deque\n"
">>> d = deque([\"tarefa1\", \"tarefa2\", \"tarefa3\"])\n"
">>> d.append(\"tarefa4\")\n"
">>> print(\"Tratando\", d.popleft())\n"
"Tratando tarefa1"
#: ../../tutorial/stdlib2.rst:322
msgid ""
"unsearched = deque([starting_node])\n"
"def breadth_first_search(unsearched):\n"
" node = unsearched.popleft()\n"
" for m in gen_moves(node):\n"
" if is_goal(m):\n"
" return m\n"
" unsearched.append(m)"
msgstr ""
"nao_pesquisada = deque([no_inicial])\n"
"def busca_em_profundidade(nao_pesquisada):\n"
" no = nao_pesquisada.popleft()\n"
" for m in gen_moves(no):\n"
" if eh_o_alvo(m):\n"
" return m\n"
" nao_pesquisada.append(m)"
#: ../../tutorial/stdlib2.rst:330
msgid ""
"In addition to alternative list implementations, the library also offers "
"other tools such as the :mod:`bisect` module with functions for manipulating "
"sorted lists::"
msgstr ""
"Além de implementações alternativas de listas, a biblioteca também oferece "
"outras ferramentas como o módulo :mod:`bisect` com funções para manipulação "
"de listas ordenadas::"
#: ../../tutorial/stdlib2.rst:334
msgid ""
">>> import bisect\n"
">>> scores = [(100, 'perl'), (200, 'tcl'), (400, 'lua'), (500, 'python')]\n"
">>> bisect.insort(scores, (300, 'ruby'))\n"
">>> scores\n"
"[(100, 'perl'), (200, 'tcl'), (300, 'ruby'), (400, 'lua'), (500, 'python')]"
msgstr ""
">>> import bisect\n"
">>> notas = [(100, 'perl'), (200, 'tcl'), (400, 'lua'), (500, 'python')]\n"
">>> bisect.insort(notas, (300, 'ruby'))\n"
">>> notas\n"
"[(100, 'perl'), (200, 'tcl'), (300, 'ruby'), (400, 'lua'), (500, 'python')]"
#: ../../tutorial/stdlib2.rst:340
msgid ""
"The :mod:`heapq` module provides functions for implementing heaps based on "
"regular lists. The lowest valued entry is always kept at position zero. "
"This is useful for applications which repeatedly access the smallest element "
"but do not want to run a full list sort::"
msgstr ""
"O módulo :mod:`heapq` oferece funções para implementação de *heaps* baseadas "
"em listas normais. O valor mais baixo é sempre mantido na posição zero. Isso "
"é útil para aplicações que acessam repetidamente o menor elemento, mas não "
"querem reordenar a lista toda a cada acesso::"
#: ../../tutorial/stdlib2.rst:345
msgid ""
">>> from heapq import heapify, heappop, heappush\n"
">>> data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]\n"
">>> heapify(data) # rearrange the list into heap order\n"
">>> heappush(data, -5) # add a new entry\n"
">>> [heappop(data) for i in range(3)] # fetch the three smallest entries\n"
"[-5, 0, 1]"
msgstr ""
">>> from heapq import heapify, heappop, heappush\n"
">>> dados = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]\n"
">>> heapify(dados) # reorganiza a lista como um heap\n"
">>> heappush(dados, -5) # adiciona o valor -5 ao heap\n"
">>> [heappop(dados) for i in range(3)] # encontra as 3 menores entradas\n"
"[-5, 0, 1]"
#: ../../tutorial/stdlib2.rst:356
msgid "Decimal Floating-Point Arithmetic"
msgstr "Aritmética decimal com ponto flutuante"
#: ../../tutorial/stdlib2.rst:358
msgid ""
"The :mod:`decimal` module offers a :class:`~decimal.Decimal` datatype for "
"decimal floating-point arithmetic. Compared to the built-in :class:`float` "
"implementation of binary floating point, the class is especially helpful for"
msgstr ""
"O módulo :mod:`decimal` oferece o tipo :class:`~decimal.Decimal` para "
"aritmética decimal com ponto flutuante. Comparado a implementação embutida :"
"class:`float` que usa aritmética binária de ponto flutuante, a classe é "
"especialmente útil para:"
#: ../../tutorial/stdlib2.rst:362
msgid ""
"financial applications and other uses which require exact decimal "
"representation,"
msgstr "aplicações financeiras que requerem representação decimal exata,"
#: ../../tutorial/stdlib2.rst:364
msgid "control over precision,"
msgstr "controle sobre a precisão,"
#: ../../tutorial/stdlib2.rst:365
msgid "control over rounding to meet legal or regulatory requirements,"
msgstr "controle sobre arredondamento para satisfazer requisitos legais,"
#: ../../tutorial/stdlib2.rst:366
msgid "tracking of significant decimal places, or"
msgstr "rastreamento de casas decimais significativas, ou"
#: ../../tutorial/stdlib2.rst:367
msgid ""
"applications where the user expects the results to match calculations done "
"by hand."
msgstr ""
"aplicações onde o usuário espera que os resultados sejam os mesmos que os "
"dos cálculos feitos à mão."
#: ../../tutorial/stdlib2.rst:370
msgid ""
"For example, calculating a 5% tax on a 70 cent phone charge gives different "
"results in decimal floating point and binary floating point. The difference "
"becomes significant if the results are rounded to the nearest cent::"
msgstr ""
"Por exemplo, calcular um imposto de 5% sobre uma chamada telefônica de 70 "
"centavos devolve diferentes resultados com aritmética de ponto flutuante "
"decimal ou binária. A diferença torna-se significativa se os resultados são "
"arredondados para o centavo mais próximo::"
#: ../../tutorial/stdlib2.rst:374
msgid ""
">>> from decimal import *\n"
">>> round(Decimal('0.70') * Decimal('1.05'), 2)\n"
"Decimal('0.74')\n"
">>> round(.70 * 1.05, 2)\n"
"0.73"
msgstr ""
">>> from decimal import *\n"
">>> round(Decimal('0.70') * Decimal('1.05'), 2)\n"
"Decimal('0.74')\n"
">>> round(.70 * 1.05, 2)\n"
"0.73"
#: ../../tutorial/stdlib2.rst:380
msgid ""
"The :class:`~decimal.Decimal` result keeps a trailing zero, automatically "
"inferring four place significance from multiplicands with two place "
"significance. Decimal reproduces mathematics as done by hand and avoids "
"issues that can arise when binary floating point cannot exactly represent "
"decimal quantities."
msgstr ""
"O resultado de :class:`~decimal.Decimal` considera zeros à direita, "
"automaticamente inferindo quatro casas decimais a partir de multiplicandos "
"com duas casas decimais. O módulo Decimal reproduz a aritmética como fazemos "
"à mão e evita problemas que podem ocorrer quando a representação binária do "
"ponto flutuante não consegue representar quantidades decimais com exatidão."
#: ../../tutorial/stdlib2.rst:386
msgid ""
"Exact representation enables the :class:`~decimal.Decimal` class to perform "
"modulo calculations and equality tests that are unsuitable for binary "
"floating point::"
msgstr ""
"A representação exata permite à classe :class:`~decimal.Decimal` executar "
"cálculos de módulo e testes de igualdade que não funcionam bem em ponto "
"flutuante binário::"
#: ../../tutorial/stdlib2.rst:390
msgid ""
">>> Decimal('1.00') % Decimal('.10')\n"
"Decimal('0.00')\n"
">>> 1.00 % 0.10\n"
"0.09999999999999995\n"
"\n"
">>> sum([Decimal('0.1')]*10) == Decimal('1.0')\n"
"True\n"
">>> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 == 1.0\n"
"False"
msgstr ""
">>> Decimal('1.00') % Decimal('.10')\n"
"Decimal('0.00')\n"
">>> 1.00 % 0.10\n"
"0.09999999999999995\n"
"\n"
">>> sum([Decimal('0.1')]*10) == Decimal('1.0')\n"
"True\n"
">>> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 == 1.0\n"
"False"
#: ../../tutorial/stdlib2.rst:400
msgid ""
"The :mod:`decimal` module provides arithmetic with as much precision as "
"needed::"
msgstr ""
"O módulo :mod:`decimal` implementa a aritmética com tanta precisão quanto "
"necessária::"
#: ../../tutorial/stdlib2.rst:402
msgid ""
">>> getcontext().prec = 36\n"
">>> Decimal(1) / Decimal(7)\n"
"Decimal('0.142857142857142857142857142857142857')"
msgstr ""
">>> getcontext().prec = 36\n"
">>> Decimal(1) / Decimal(7)\n"
"Decimal('0.142857142857142857142857142857142857')"