• Python
  • 03. Entrada e saída do terminal
  • Recebendo dados no terminal

Recebendo dados no terminal#

Relembrando a aula passada...#

Vamos começar relembrando o que aprendemos na aula passada com um exercício guiado.

Acessar exercício

Exercise 1

Faça uma função que recebe um número \(x\) e calcula \(-1^x\). Esta função deverá se chamar revisao_funcao. Por enquanto não rode os testes ainda, vamos testar manualmente nossa função.

Mude para a aba Explorador, encontre e abra o arquivo exemplo.py deste exercício. Ele deverá estar na pasta python/funcao/revisao_funcoes. Modifique-o para mostrar revisao_funcao(0). Qual é o resultado mostrado?

Answer

O resultado de \((-1)^0\) é \(1\).

Se você testou o seu código e o resultado obtido foi -1, talvez você tenha esquecido de utilizar os parênteses. Note que a operação de potenciação possui precedência sobre a operação de subtração. Desta forma, o interpretador Python irá resolver a operação 1**0 e depois aplicar o sinal de negativo - sobre o resultado.

Exercise 2

Agora que você consertou seu programa, quais os resultados de revisao_funcao considerando os argumentos 1, 2 e -1?

Answer

O resultado da expressão \((-1)^1\) é \(-1\), o resultado de \((-1)^2\) é \(1\) e o resultado de \((-1)^-1\) é \(-1\).

Exercise 3

Vamos refletir um pouco. O que a sua função faz?

Answer

A função \(f(x) = (-1)^x\) verifica se \(x\) é par ou ímpar. Sempre que \(x\) for par a função devolve o número 1 e sempre que \(x\) for ímpar a função devolve o número -1.

Exercise 4

Considere a função Python que você implementou para \(f(x) = (-1)^x\). Você consegue sugerir um nome mais representativo para esta função?

Answer

Uma sugestão seria verifica_par_impar.

Exercise 5

Então vamos fazer o exercício Verifica se é par ou ímpar.

Acessar exercício

Criando novos programas em Python#

Nosso fluxo de trabalho até agora envolveu resolver exercícios no VSCode. Apesar de isso ser útil para praticar, não é realista. Em geral usamos o VSCode para criar nós mesmos os arquivos de programa e executá-los. Além de podermos criar programas que possam ser usados por outras pessoas, isso também nos permite aprender experimentando escrever código e rodando para ver seu resultado.

Para isto precisamos conhecer um pouco mais sobre o VSCode.

  1. Este botão abre o painel de DevLife, contendo os exercícios e seus testes
  2. Este botão abre o painel Explorador, que mostra todas as pastas e arquivos do nosso projeto.

Ao abrir o painel Explorador devemos ver algo parecido com o abaixo. Temos várias pastas que contém arquivos.

  1. Para ver o conteúdo de uma pasta basta clicar na setinha >
  2. Podemos abrir arquivos diretamente do Explorador usando clique duplo
  1. Podemos criar novas pastas usando o botão direito em uma pasta e selecionando Nova pasta
  2. Podemos criar novos arquivos usando o botão direito em uma pasta e selecionando Novo arquivo
  3. Também podemos rodar nossos programas Python igual fizemos nos exercícios.

Exercise 6

Vamos testar vários códigos na aula de hoje. Vamos criar uma pasta para guardá-los neste exercício.

  1. crie uma pasta chamada input dentro da pasta python que já existe no seu Explorador
  2. dentro desta pasta input, crie uma nova pasta chamada testes
  3. crie um arquivo teste_input.py dentro desta pasta e abra-o para edição

Tip 1

Não se assuste se essas operações parecerem muito complicadas e cheias de passos. Vamos praticar fazer isto tanto durante o curso que vai se tornar natural.

A partir de agora, vamos criar vários arquivos dentro dessa pasta. Para não ficarmos repetindo toda vez o caminho completo, vamos dizer simplesmente que você deve criar um arquivo de nome XX na pasta do handout de hoje.

Pedindo dados para o usuário#

Até agora fizemos programas que, ao serem executados, sempre fazem exatamente a mesma coisa. Seria interessante permitir algum tipo de interação com o usuário. Por enquanto estamos desenvolvendo programas que imprimem valores no terminal, então também vamos utilizar o terminal para receber dados digitados pelo usuário.

Em Python, a função input() pede um texto para o usuário e retorna este texto ao programa. Você pode, por exemplo, guardar esse texto em uma variável para usar em seguida.

Exercise 7

Teste o seguinte programa no seu computador. Você pode digitá-lo no arquivo teste_input.py criado no último exercício.

# Pede a cor favorita para o usuário digitar
cor_favorita = input('Qual a sua cor favorita? ')

# Imprime a cor favorita do usuário.
print(cor_favorita)

O programa acima deve imprimir Qual a sua cor favorita? (note que existe um espaço após a interrogação) no terminal e parar. Nesse momento ele está esperando que o usuário digite algo no terminal. Até que isso aconteça, o programa fica parado na chamada da função input().

Importante

Você se lembra do que falamos no handout de operações matemáticas? O programa é executado uma linha após a outra.

Até agora os programas rodavam tão rápido que isso não parecia fazer diferença, mas com o input isso muda. O resto do programa não é executado até que o usuário digite algo no terminal e aperte enter.

Exercise 8

Digite algo e veja a saída do programa.

Exercise 9

Agora considere o codigo a seguir. Sem rodar ele e considerando que o usuário digitou Vermelho, o que seria impresso no terminal após o usuário digitar?

cor_favorita = input('Qual a sua cor favorita? ')
cor_favorita = 'Amarelo'


print(cor_favorita)

Answer

Será impresso Amarelo no terminal.

Na primeira linha cor_favorita recebe o valor Vermelho digitado pelo usuário. Porém, logo em seguida fazemos uma nova atribuição e substituímos esse valor por Amarelo. Desta maneira, quando chegamos no print a variável cor_favorita tem o valor da última atribuição que fizemos (que é Amarelo).

Se quiser, agora execute o programa veja seu comportamento.

Exercise 10

Agora considere o codigo a seguir. Sem rodar ele e considerando que o usuário digitou Vermelho, o que seria impresso no terminal após o usuário digitar?

cor_favorita = 'Amarelo'
cor_favorita = input('Qual a sua cor favorita? ')

print(cor_favorita)

Answer

Foi impresso Vermelho no terminal.

Ao início do programa, a variável cor_favorita recebe o valor Amarelo. Mas logo em seguida, recebe o valor do comando input. Como o usuário digitou o valor Vermelho, então este valor foi armazenado na variável cor_favorita. Desta forma, o comando print(cor_favorita), imprimiu o texto Vermelho no terminal.

Se quiser, agora execute o programa veja seu comportamento.

Praticando o uso do input#

Exercise 11

Crie um arquivo de nome testes_soma.py na pasta do handout de hoje. Vamos usá-lo para os próximos exercícios desta seção.

Exercise 12

Considere a seguinte função.

# Função que soma dois números.
def soma(x, y):
    z = x + y
    return z

Se a digitarmos no arquivo testes_soma.py, sem rodar ela, qual é a saída esperada? Depois de responder rode e veja o que acontece.

Answer

O programa acima não vai fazer nada. Nós só estamos definindo a função soma, mas não estamos pedindo para o Python executá-la (ou seja, não estamos chamando a função).

Exercise 13

Então o que devemos adicionar ao código para chamar a função soma criada anteriormente e imprimir a soma dos números 14 e 28.

Answer

A forma correta de calcular a soma dos números 14 e 28 utilizando a função soma é:

# Função que soma dois números.
def soma(x, y):
    z = x + y
    return z

a = 14
b = 28

# Testando nossa função
resultado = soma(a, b)
print(resultado)

Se você escolheu alguma das outras opções, tente descobrir onde está o problema.

Exercise 14

Modifique seu programa para que tenha a resposta correta e rode-o. Ao executar o programa, seu programa deve ter o comportamento descrito na resposta do exercício anterior.

Exercise 15

Ao invés de deixarmos números fixos para testar a função, vamos perguntar para o usuário quais números ele quer somar. Qual comando Python devemos utilizar para fazer isso?

Answer

Para interagir com o usuário utilizamos o comando input. Este comando possibilita receber valores digitados no terminal pelo usuário.

Exercise 16

Considere que para o exercício você chegou no código a seguir.

# Função que soma dois números.
def soma(x, y):
    z = x + y
    return z

# Lendo os dois números.
a = input('Entre com o primeiro número: ')
b = input('Entre com o segundo número: ')

# Somando os dois números.
resultado = soma(a, b)
print(resultado)

Ao testar o código acima digitando o número 14 e o número 28. Qual foi o resultado impresso no terminal? Você pode rodar o código neste exercício.

Answer

Seu programa funcionou? Deu algum erro? Fez o que você esperava? Vamos tentar entender o que está acontecendo.

Lembre-se que a função input() devolve o texto digitado pelo usuário. Na nossa soma, queremos somar números, não texto. Ou seja, estamos fazendo a seguinte operação '14' + '28', ao invés de, 14 + 28.

Vamos tentar entender melhor o que está acontecendo a seguir.