1.9. Entrada e Saída¶
Geralmente, precisamos interagir com os usuários
para obter dados ou fornecer algum tipo de resultado. A maioria dos programas
hoje usa uma caixa de diálogo como forma de pedir ao usuário para fornecer algum tipo
de entrada. Embora o Python tenha uma maneira de criar caixas de diálogo,
há uma função muito mais simples que podemos usar. O Python nos fornece uma
função que permite pedir a um usuário para inserir alguns dados e retorna um
referência aos dados na forma de uma string. A função é chamada
input
.
A função input
do Python recebe um único parâmetro que é uma string.
Essa string é frequentemente chamada de prompt porque contém um
texto informativo que informa o usuário para digitar alguma coisa.
Por exemplo, você pode chamar a função input
da seguinte forma:
umNome = input('Por favor digite o seu nome: ')
Agora, o que o usuário digitar após o prompt será armazenado na
variável umNome
. Usando a função input
, podemos facilmente escrever
instruções que solicitarão ao usuário que insira dados e, em seguida,
incorporar esses dados no processamento. Por exemplo, nas duas
seguintes instruções, a primeira pergunta ao usuário pelo nome e a
segunda imprime o resultado de algum processamento simples baseado na string
que fornecida.
É importante notar que o valor retornado pela função input
será uma string representando os caracteres exatos que foram
inserido após o prompt. Se você quiser que essa string seja interpretada como
outro tipo, você deve fornecer a conversão de tipo explicitamente. Nas declarações
abaixo, a string inserida pelo usuário é convertida em um float
que pode ser usado em seguida para processamento aritmético.
raio_str = input("Por favor digite o raio do círculo: ")
raio = float(raio_str)
diametro = 2 * raio
1.9.1. Formatação de Strings¶
Nós já vimos que a função print
fornece uma maneira muito simples para exibir valores de saída de um programa em Python.
O print
aceita zero ou mais parâmetros e os exibe usando
um único espaço em branco como o separador padrão. É possível alterar o
caracter separador, definindo o parâmetro opcional sep
. Além disso, cada print
termina com um caractere de nova linha por default. Esse comportamento pode ser
alterado, definindo o parâmetro opcional end
. Estas variações são mostradas
a seguir:
>>> print("Olá")
Olá
>>> print("Olá","Mundo")
Olá Mundo
>>> print("Olá","Mundo", sep="***")
Olá***Mundo
>>> print("Olá","Mundo", end="***")
Olá Mundo***
>>>
Geralmente, é útil ter mais controle sobre a aparência da sua saída. Felizmente, o Python nos fornece uma alternativa chamada string de formatação. Uma string de formatação é um modelo (template) no qual palavras ou espaços que permanecerão constantes são combinados com espaços reservados para variáveis que serão inseridas na string. Por exemplo, o comando
print(umNome, "tem", anos, "anos de idade.")
contém as palavras tem `` e ``anos de idade
que são constantes,
mas o nome e a idade dependem do valor das variáveis no momento da execução.
Usando uma string de formatação, nós escrevemos o comando anterior como
print("%s tem %d anos de idade." % (umNome, anos))
Este exemplo simples ilustra uma nova expressão com strings.
O operador %
é chamado operador de formatação. O lado esquerdo
da expressão contém o modelo ou string de formatação, e o
lado direito contém uma coleção de valores que serão substituídos na
string de formatação. Observe que o número de valores na coleção
do lado direito corresponde ao número de caracteres %
na
string de formatação. Os valores são usados na sequência,
da esquerda para a direita da coleção e inseridos na string de formatação.
Vamos ver os dois lados dessa expressão de formatação em mais detalhes.
A string de formatação pode conter uma ou mais especificações de conversão. Um
caractere de conversão informa ao operador de formatação que tipo de dado
vai ser inserido nessa posição na string. No exemplo
acima, o %s
especifica uma string, enquanto o %d
especifica um
inteiro. Outras especificações possíveis incluem i
, u
, f
,
e
, g
, c
ou %
. A Tabela 9 resume todos os
diversos tipos de caracteres de conversão.
Caractere de conversão |
Usado para |
---|---|
|
Inteiro (int) |
|
Inteiro sem sinal |
|
Ponto flutuante (float) como m.ddddd |
|
Ponto flutuante (float) como m.ddddde+/-xx |
|
Ponto flutuante (float) como m.dddddE+/-xx |
|
Usa |
|
Inserir um único caractere |
|
String, ou qualquer tipo do Python que possa ser convertido para string usando a função |
|
Inserir um caractere |
Além do caractere de conversão, você também pode incluir um modificador de formato
entre o caractere %
e o caractere de conversão. Modificadores de formato podem
ser usados para justificar o valor à esquerda ou à direita, dentro de um campo
com determinada largura. Modificadores também podem ser usados para especificar a largura do campo
bem como um número de dígitos após o ponto decimal. A Tabela 10
explica esses modificadores de formato
Modificador |
Exemplo |
Descrição |
---|---|---|
número |
|
Coloca o valor em um campo de 20 caracteres |
|
|
Coloca o valor em um campo de 20 caracteres, justificado à esquerda |
|
|
Coloca o valor em um campo de 20 caracteres, justificado à direita |
|
|
Coloca o valor em um campo de 20 caracteres, preenchido com zeros à esquerda |
|
|
Coloca o valor em um campo de 20 caracteres, com 2 caracteres à direita do ponto decimal |
|
|
Coloca o valor associado à chave |
O lado direito do operador de formatação é uma coleção de valores que
será inserido na string de formatação. A coleção deve ser uma
tupla ou um dicionário. Se a coleção for uma tupla, os valores são
inseridos na mesma ordem da tupla. Ou seja, o primeiro elemento na tupla
corresponde ao primeiro caractere de conversão na string de formatação. Se a
coleção for um dicionário, os valores são inseridos de acordo com sua
chaves. Neste caso, todos os caracteres de formato devem usar o modificador
(nome)
para especificar o nome da chave.
>>> preço = 24
>>> item = "banana"
>>> print("O preço do kilo de %s é %d reais"%(item,preço))
O preço do kilo de banana é 24 reais
>>> print("O preço do kilo de %+10s é %5.2d reais"%(item,preço))
O preço do kilo de banana é 24.00 reais
>>> print("O preço do kilo de %+10s é %10.2f reais"%(item,preço))
O preço do kilo de banana é 24.00 reais
>>> dicio = {"item":"banana","preço":24}
>>> print("O preço do kilo de %(item)s é %(preço)7.1f reais"%dicio)
O preço do kilo de banana é 24.0 reais
>>>
Além das strings de formatação que usam caracteres de conversão e modificadores
de formato, as strings do Python também incluem um método format
que pode ser
usado em conjunto com uma nova classe Formatter
para implementar
formatações mais complexas. Mais sobre esses recursos podem ser encontrados
no manual de referência do Python.