Saída de dados
Como já vimos, a função print()
é responsável pela impressão de dados/informações. No exemplo abaixo, temos três chamadas da função. Na primeira e terceira linha a função print
recebe um argumento, enquanto na segunda linha nenhum argumento é passado. No caso do print
da linha 2, será produzindo uma linha em branco.
No entanto, essa função pode aceitar qualquer número de argumentos, incluindo zero, um ou mais argumentos. Isso é muito útil quando precisamos unir informações. Quando a função possui dois ou mais argumentos, eles deve ser separados pelo operador vírgula (,
). Neste caso, a função print
avalia os argumentos e exibe os resultados, separados por espaços simples, em uma única linha. Veja alguns exemplos:
>>> print("Argumento1", "Argumento2", "Argumento3")
Argumento1 Argumento2 Argumento3
>>> print("1 + 2 =", 1+2)
1 + 2 = 3
>>> print("Programação", "Competitiva") # (1)
Programação Competitiva
- Perceba que este
print
é equivalente aprint("Programação Competitiva")
.
Note que, quando informamos mais de um argumento para a função print
, eles são automaticamente separados por um espaço:
Podemos modificar este comportamento utilizando o parâmetro sep
:
>>> print("Programação", "Competitiva", sep="-')
Programação-Competitiva
>>> print("Argumento1", "Argumento2", "Argumento3", sep=";")
Argumento1;Argumento2;Argumento3
>>> print("Argumento1", "Argumento2", "Argumento3", sep="; ")
Argumento1; Argumento2; Argumento3
>>> print("1 + 2", 1+2, sep=" = ")
1 + 2 = 3
>>> print("Um", "Dois", "Três", sep="~~~")
Um~~~Dois~~~Três
A função print
imprime automaticamente o caractere de quebra de linha (\n
) no fim de cada execução. Em outras palavras, ela exibe os valores dos argumentos e, em seguida, move o cursor para a próxima linha na janela do terminal.
Resultado:
Podemos modificar este comportamento utilizando o parâmetro end
:
- Neste caso, o
end = ""
significa: "termine a linha com uma string vazia em vez de uma nova linha".
Resultado:
Veja outros exemplos:
Resultado:
Agora com o caractere de controle de quebra de linha (\n
) no fim:
Resultado:
f-string
Como vimos, podemos separar cada argumento usando o operador vírgula, mas usar este operador pode se tornar bastante "tedioso". Por exemplo:
>>> n1 = 10
>>> n2 = 6
>>> print("A soma de", n1, "e", n2, "vale", n1 + n2)
A soma de 10 e 6 vale 16
Imagine um código onde se deseja imprimir dezenas de variáveis.
Para resolver este inconveniente, devemos formatar a string (mensagem) que será exibida. Formatar uma string também torna seu código mais legível e editável. Python oferece uma grande variedade de métodos para formatar a saída, mas na disciplina adotaresmo/usaremos o f-string.
O método f-strings é usado para incorporar os valores de expressões dentro de strings. As expressões são avaliadas em tempo de execução. Este método é considerado o mais fácil: você só precisa colocar um f
ou F
antes da string e colocar as variáveis ou expressões que deseja incorporar na string entre chaves ({}
). Veja um exemplo:
>>> nome = "Paulo"
>>> idade = 20
>>> f"Olá, {nome}. Sua idade é {idade}"
'Olá, Paulo. Sua idade é 20'
Outro exemplo:
>>> n1 = 10
>>> n2 = 6
>>> print(f"A soma de {n1} e {n2} vale {n1 + n2}") # (1)
A soma de 10 e 6 vale 16
- Note que podemos colocar uma experessão ou chamada de função dentro das chaves.
Como as f-strings são avaliadas em tempo de execução, você pode colocar qualquer expressão válida em Python nelas. Isso permite que você faça algumas coisas interessantes:
>>> f"2 x 10 = {2 * 10}"
'2 x 10 = 20'
>>> x = 3.99
>>> y = "10.0"
>>> f"{int(x)} + {float(y)} = {int(x) + float(y)}"
'3 + 10.0 = 13.0'
>>> f"{y} / {x} = {float(y) / x}"
'10.0 / 3.99 = 2.506265664160401'
Podemos usar o f-string para formatar valores do tipo inteiro ou ponto flutuante. Por exemplo, pode ser interessante ou necessário imprimir um número real com uma certa quantidade de casas decimais (por exemplo, duas), ou seja, queremos formatar a impressão desse valor. Para isso, devemos usar o seguinte padrão {<expressao>}:.<numCasasDecimais>f
. Por exemplo, se quisermos imprimir o valor de 10.0 / 3.99
com 5 casas decimais, devemos fazer: print(f"{10.0/3.99:.5f}")
. Veja alguns exemplos:
>>> print(f"{10.0/3.99:.5f}")
2.50627
>>> print(f"{10.0/3.99:.20f}")
2.50626566416040086338
>>> media = (8 + 7.5 + 8.2) / 3
>>> print(media)
7.8999999999999995
>>> print(f"{media:.2f}")
7.90
print(f"{media:.1f}")
7.9
>>> print(f"{media:.0f}")
8
No caso de valores inteiros, pode ser interessante ou necessário imprimir/adicionar zero à esquerda do número ou imprimir o valor à direita em um campo de tamanho específico:
>>> a = 100
>>> b = 1
>>> print(f"a = {a}\nb = {b:03d}") # (1)
a = 100
b = 001
>>> print(f"a = {a:05d}\nb = {b:05d}")
a = 00100
b = 00001
>>> print(f"a={a:5d}\nb = {b:05d}") # Note a diferença do exemplo anterior
a = 100
b = 00001
>>> print(f"a = {a:5d}\nb = {b:5d}")
a = 100
b = 1
>>> print(f"Tempo do corredor: {3:02d}h {33:02d}min")
Tempo do corredor: 03h 33min
- O
{b:03d}
significa "Exiba um número inteiro com 3 dígitos. Se ele possuir menos de 3 dígitos, preencha com zeros à esquerda até deixá-lo com 3 dígitos".
Consegue descobrir qual o objetivo do \n
nos strings das funções print
's anteriores?
Nos links abaixo você obtem mais informações e exemplos sobre o f-string:
- Formatted string literals
- Python F-Strings Number Formatting Cheat Sheet
- How to use f-strings in Python
Caracteres de Escape
Um caractere de escape é um caractere especial precedido por uma barra invertida (\
), que aparece dentro de uma string. Quando uma string que contém caracteres de escape é impressa, os caracteres de escape são tratados como comandos especiais incorporados na string. Por exemplo, \n
é o caractere de escape de nova linha. Quando o caractere de escape \n
é impresso, ele não é exibido na tela. Em vez disso, faz com que a saída avance para a próxima linha. Por exemplo:
Python reconhece vários caracteres de escape, alguns dos quais estão listados na tabela abaixo:
Caractere de Escape | Efeito |
---|---|
\n |
Faz com que a saída seja avançada para a próxima linha. |
\t |
Faz com que a saída pule para a próxima posição de tabulação horizontal. |
\' |
Faz com que uma aspa simples seja impressa. |
\" |
Faz com que uma aspa dupla seja impressa. |
\\ |
Faz com que um caractere de barra invertida seja impresso. |
Entrada de dados
Até este ponto, os programas desenvolvidos consideravam apenas valores predefinidos, inseridos diretamente no código. No entanto, um dos aspectos mais poderosos da programação reside na capacidade de criar uma solução para um problema e aplicá-la repetidamente. Para alcançar essa flexibilidade, é necessário adaptar os programas de modo a permitir que novos valores sejam fornecidos enquanto estão em execução. Isso possibilita a execução dos programas com diferentes conjuntos de dados sem a necessidade de modificar o código.
O termo "entrada de dados" é utilizado para descrever o momento em que um programa recebe informações ou valores através de dispositivos de entrada, como teclados, ou a partir de arquivos armazenados em disco. A entrada de dados desempenha um papel fundamental na programação, permitindo que os programas interajam com os usuários e processem informações variáveis. É um processo pelo qual os programas obtêm informações externas, como valores numéricos, texto, ou até mesmo dados mais complexos, como arquivos de imagem ou áudio. A capacidade de receber e interpretar esses dados é essencial para criar programas úteis e interativos.
Em Python, a função integrada input()
é responsável por receber dados de entrada dos usuários. Ela recebe um argumento (opcional), que é a mensagem a ser exibida e retorna o valor digitado pelo usuário no formato de string. Essa função faz o programa parar e esperar que o usuário insira um valor no teclado. Quando o usuário pressiona a tecla Return ou Enter, a função aceita o valor de entrada e o disponibiliza para o programa. Veja um exemplo:
nome = input("Digite seu nome: ")
print(type(nome))
print("Olá " + nome) # (1)
x = input("Digite um número inteiro: ")
y = input("Digite outro número inteiro: ")
print(x + y) # (2)
- Perceba que estamos utilizando o operador de concatenação (operador
+
) de string dentro da funçãoprint
. - Note que é feito uma concatenação dos valores e não a soma, mesmo sendo digitado dois números.
Clique na aba "Testar" e execute o código.
Como já dito, é importante destacar que a função input()
sempre retornará o valor recebido no formato de uma string, mesmo que ele seja de um tipo de dado diferente como, por exemplo, um número real. Para contornar esse pequeno problema, basta utilizarmos as funções de conversão int()
para converter o valor retornado em um número inteiro e a função float()
para convertê-lo em número real.
O código a seguir mostra uma versão simplificada do código anterior:
x = int(input("Digite um número inteiro: "))
y = int(input("Digite outro número inteiro: "))
print(x + y)
Esta instrução usa chamadas de função aninhadas (nested function). O valor retornado pela função de input()
é passado como argumento para a função int()
. É assim que funciona:
- A função
input
é chamda para obter um valor inserido no teclado; - O valor retornado da função
input
(uma string) é passado como um argumento para a funçãoint()
; - O valor inteiro retornado da função
int()
é atribuído à variávelx
.
Atenção
As funções int()
e float()
funcionam apenas se o valor que está sendo convertido contiver um valor numérico válido. Se o argumento não puder ser convertido no tipo de dados especificado, ocorrerá um erro conhecido como exceção. Uma exceção é um erro inesperado que ocorre durante a execução de um programa, fazendo com que o programa pare se o erro não for tratado adequadamente. Por exemplo:
Vamos a mais um exemplo:
>>> base = float(input("Digite a base: "))
Digite a base: 10
>>> altura = float(input("Digite a altura: "))
Digite a altura: 6.5
>>> print(f"Área: {base*altura}")
65.0
Não se esqueça
A função input()
sempre retornar um string. Devemos fazer uma conversão dos dados se quisermos trabalhar com números.