As leituras (entradas/input) e a escritas (saídas/output) de dados de um programa em Python são efetuadas através das instruções input() e print(), respetivamente.
input()
A instrução input() permite ler dados.
Forma geral:
variavel=input(pergunta)
Em que a pergunta é um texto (string), opcional, que indica ao utilizador o que se pretende.
Exemplo:
>>> idade=input("Qual a sua idade? ")
Qual a sua idade? 15
>>> print("A sua idade é:",idade)
A sua idade é: 15
Alternativamente, poderá forçar que a variável lida seja um número inteiro:
>>> idade=int(input("Qual a sua idade? "))
Qual a sua idade? 15
>>> print("A sua idade é:",idade)
A sua idade é: 15
Neste caso, independentemente do conteúdo digitado pelo utilizador, assume o tipo inteiro. No caso do utilizador digitar texto, não convertível para número inteiro, será emitido um erro.
Outra alternativa, será escrever o programa num ficheiro, sendo o código necessário apenas o seguinte (Idade.py):
idade=int(input("Qual a sua idade? "))
print("A sua idade é:",idade)
Execução (Run/Run Module):
===== RESTART: C:/IP/idade.py =====
Qual a sua idade? 15
A sua idade é: 15
Caso particular da leitura de vários valores numéricos na mesma linha
Como irá constatar na plataforma CodeIn, existem problemas em que é solicitada a leitura de 2 ou mais números na mesma linha.
Nestes casos, temos que tratar o input (entrada) por forma a que os dados lidos sejam separados e atribuídos às variáveis desejadas. Este processo é conhecido como split (divisão), visando separar os dados pelo espaço.
Exemplo:
>>> a,b,c=map(int,input("Digite a dimensão dos catetos de um triângulo: ").split())
Digite a dimensão dos catetos de um triângulo: 2 3 5
>>> p=a+b+c;
>>> print("O perímetro do triângulo é",p)
O perímetro do triângulo é 10
No exemplo anterior, são lidas as 3 dimensões dos catetos de um triângulo.
Como são lidas na mesma linha (separadas por espaço), a primeira instrução procede às seguintes operações:
Lê a totalidade dos valores da linha «2 3 5» - função input();
Separa, pelo espaço, os dados em 3 segmentos 2, 3 e 5;
Força a conversão para inteiro (função int), aplicando-a a cada um dos segmentos, através da função map().
print()
A instrução print() permite a escrita de dados.
Forma geral:
print(expressão1,expressão2,...)
Exemplo 1 - ImprimeVariaveis.py:
# Imprime o valor das variáveis a e b
a=2
b=3
print(a,b)
Nota: um comentário é precedido do carácter # e é ignorado pelo interpretador.
Execução:
===== RESTART: C:/IP/ImprimeVariaveis.py =====
2 3
Exemplo 2 - QuadradoNumero.py:
# Quadrado de um número inteiro
num=int(input("Digite um número inteiro: "))
print(num,"ao quadrado é",num**2)
Execução:
===== RESTART: C:/IP/QuadradoNumero.py =====
Digite um número inteiro: 3
3 ao quadrado é 9
Alternativamente, com o mesmo resultado prático, podíamos utilizar uma variável para armazenar o cálculo:
# Quadrado de um número inteiro
num=int(input("Digite um número inteiro: "))
quadrado=num**2
print(num,"ao quadrado é",quadrado)
Impressão formatada
Em algumas circunstâncias, para imprimir números mas não só, temos que formatar o output (na plataforma CodeIn há vários casos destes).
Há diferentes formas de o fazer em Python.
Nas versões mais antigas o método format() não era suportado, sendo substituído pelo sinal %. Atualmente o format() é a forma recomendada (até por analogia com as linguagens de programação modernas).
Formatar saídas numéricas
Note-se:
{} será substituído pelo parâmetro respetivo do format();
quando temos {0} isto corresponderá ao primeiro parâmetro do format(), quando temos {1} isto corresponderá ao segundo parâmetro e assim sucessivamente;
para além do local e ordem especificado entre {}, podemos indicar carateres de formatação.
>>> print("A soma de 1 + 2 é {0}".format(1+2))
A soma de 1 + 2 é 3
>>> a=10
>>> b=20
>>> c=a+b
>>> print("A soma de {0} + {1} é {2}".format(a,b,c))
A soma de 10 + 20 é 30
>>> a=5
>>> b=95
>>> c=a+b
>>> print("A soma de {0} + {1} é {2}".format(a,b,c))
A soma de 5 + 95 é 100
>>> print("A soma de {0:3d} + {1:3d} é {2:3d}".format(a,b,c)) # Imprime com espaços à esquerda por forma a que o número ocupe 3 dígitos
A soma de 5 + 95 é 100
>>> print("A soma de {0:03d} + {1:03d} é {2:03d}".format(a,b,c)) # Imprime com zeros à esquerda por forma a que o número ocupe 3 dígitos
A soma de 005 + 095 é 100
>>> print("O valor de PI é {0:.2f}".format(3.1415)) # Imprime com 2 casas decimais
O valor de PI é 3.14
>>> print("O valor de PI é {0:06.2f}".format(3.1415)) # Imprime o número com 6 dígitos no total, considerando o separador decimal, preenchendo com zeros à esquerda
O valor de PI é 003.14
Formatar strings (texto)
>>> print('{1} {0}'.format('um', 'dois'))
dois um
>>> print('{:>10}'.format('Paulo'))
Paulo
>>> print('{:_<10}'.format('Paulo'))
Paulo_____
>>> print('{:_^10}'.format('Paulo'))
__Paulo___
Se tiver curiosidade consulte mais exemplos da utilização do format em Python aqui.
Imprimir sem separador
Por defeito, quando imprimimos texto seguido ou antecedido de variáveis, a função print acrescenta espaços de separação. Para alterar este comportamento, utiliza-se o parâmetro sep.
Exemplo:
nome="Paulo"
apelido="Pinho"
print("O meu nome é «",nome,"» e o meu apelido é «",apelido,"»")
O meu nome é « Paulo » e o meu apelido é « Pinho »
Nota: o nome e o apelido não são impressos com as aspas "coladas", como seria de esperar, pois a função print acrescentou automaticamente espaços.
Para "colar" as aspas, utiliza-se o parâmetro sep="" (i. e. o sep/separator vazio):
nome="Paulo"
apelido="Pinho"
print("O meu nome é «",nome,"» e o meu apelido é «",apelido,"»",sep="")
O meu nome é «Paulo» e o meu apelido é «Pinho»
Imprimir em linha
Quando evoluirmos na nossa aprendizagem, em particular quando falarmos de ciclos e para implementar alguns dos exercícios da plataforma, será necessário escrever na mesma linha.
Segue-se um exemplo para referência futura:
# Imprimir em linha
for i in range(1,10):
print(i,end=" ")
1 2 3 4 5 6 7 8 9