• Python
  • 03. Entrada e saída do terminal

Indo além#

Estamos começando a escrever código Python e diversas dúvidas aparecem. Cada semana termina com uma seção Indo além em que nos preocupamos em criar código claro e legível. Para isso revisitamos os assuntos anteriores, focando em erros comuns e exercícios complementares e focados nesses problemas.

Se você ainda não está seguro com o material da semana esta seção também é para você. O material foi criado pensando em todos os alunos e revisitar alguns desses temas irá complementar as explicações e exercícios feitos até agora.

Toda seção terá 3 partes:

  1. leitura explicando como consertar alguns erros e dificuldades comuns
  2. exercícios focados especificamente nos erros trabalhados na leitura
  3. exercício para consertar um código com problemas

Vamos ao trabalho então!

Usar variável antes de atribuir valor#

Programas em Python rodam linha a linha começando do topo do arquivo. Portanto um programa como o abaixo não funcionará.

a = input('Digite o valor de a: ')
b = 5
d = c * b + a
c = 10

A variável c teve um valor atribuído pela primeira vez na linha 4. Porém, a linha 3 usa c! Isso não é válido pois a variável c ainda não existe. Ela só é criada na atribuição feita na linha 4.Para consertar esse código precisamos trocar a ordem das linhas 3 e 4, garantindo que c seja criada antes que uma linha de código tente ler seu valor.

a = input('Digite o valor de a: ')
b = 5
c = 10
d = c * b + a

Isso vale também para funções! Para usar uma função ela tem que ser definida antes de ser chamada.

Linha de código não tem efeito#

No código abaixo, qual seria o valor de a e b após sua execução?

a = 10
b = 5
a * 3 + b
a = a

Se você disse a=10 e b=5 está correto! As linhas 3 e 4 não tem nenhum efeito! A linha 3 faz várias contas, mas não guarda o resultado delas em nenhuma variável! Já a linha 4 pega o valor 10 (que está armazenado em a) e guarda de novo em a. Como essas linhas não mudam o valor de nenhuma variável, elas podem ser tiradas do código!.

Se você escreveu essas linhas, pense se não está querendo atualizar o valor de a ou b ou mesmo se quer criar uma variável nova. Se não for nenhum desses casos, tirá-las não muda o resultado do programa e irá deixar o código mais legível e sucinto.

Função foi redefinida ou argumento de função foi redefinido#

Criar nomes de variáveis é difícil no início e um erro comum é acabar redefinido uma função ou variável existente sem querer. Vejamos abaixo.

def faz_conta(a, b):
  return a + b

b = faz_conta(10, 5)

def faz_conta(b):
  b += 3
  return b

c = faz_conta(5)

print(b, c)
# Qual valor de b e c??

E aí, qual é o valor de b e de c? Aqui temos dois problemas:

  1. na linha 4 faz_conta se refere à função declarada na linha 1, mas na linha 9 faz_conta se refere à função declarada na linha 6
  2. dentro da segunda faz_conta, b é um argumento e recebe o valor passado na chamada. Ele não tem nada a ver com o b da linha 4!

Para deixar esse código menos confuso precisamos seguir 3 passos:

  1. dar um novo nome para faz_conta definida na linha 6
  2. usar uma nova variável na linha 7, evitando redefinir o valor b passado como argumento

Hora de praticar#

Temos um grupo de exercícios para ajudar a praticar essas melhorias.

Acessar exercícios