Ir para o conteúdo

Entrada do usuário e manipulação de erros

Deixe para depois... faça agora genérico!

Entrada e erros

Dados de entrada pode ser definidos diretamente no programa, ou seja, especificar explicitamente os valores de variáveis: A = 0.1 ou w = 1, o que pode ser adequado para pequenos programas ou programas específicos. No geral, é considerado uma boa prática deixar que o usuário forneça os dados de entrada quando o programa está rodando, sendo desnecessário modificar o programa propriamente dito para um novo conjunto de dados.

Dados de entrada no código

Até agora, vínhamos escrevendo nossos dados de entrada diretamente no código.

v0 = 5
g = 9.81
t = 0.6
y = v0*t - 0.5*g*t**2
print y

Notas:

  • Dados de entrada foram explicitamente definidos;
  • Mudanças nos dados de entrada requer uma edição do código;
  • Isso é considerado uma programação ruim, pois a edição de programas pode facilmente introduzir erros no código.
  • Regra: leia a entrada do usuário, evite editar um programa funcional!

Como programas profissionais obtém suas entradas?

  • Considere um navegador da internet: como você define um endereço da web? Como você modifica o zoom?
  • Você não vai editar o código fonte do programa para isso...

Como podemos especificar dados de entrada em programas?

  • Valores definidos explicitamente;
  • Perguntar ao usuário e ler as respostas;
  • Ler os argumentos de linha de comando;
  • Ler dados de um arquivo.

Obtendo a entrada de perguntas e respostas

Programa de exemplo:

C = 21; F = (9.0/5)*C + 32; print F

Ideia: faça o programa perguntar ao usuário "C = ?", leia a resposta do usuário e atribua essa resposta a variável C.

C = raw_input('C=? ')   ## C becomes a string
C = float(C)            ## convert to float so we can compute
F = (9./5)*C + 32
print F

Rodando em uma janela no terminal:

Terminal> python c2f_pr.py
C=? 21
69.8

Outro exemplo: imprima os primeiros n números pares

n = int(raw_input('n=? '))

for i in range(2, 2*n+1, 2):
    print i

#ou:
print range(2, 2*n+1, 2)

#ou:
for i in range(1, n+1):
    print 2*i