Listagem 6
1 # somadora4.py - somadora infinita - versao 4
2
3 print 'Digite os valores a somar seguidos de .'
4 print 'Para encerrar apenas .'
5 total = 0
6 while 1:
7 try:
8 linha = raw_input(':')
9 n = float(linha)
10 total = total + n
11 except:
12 if len(linha) == 0:
13 break
14 elif ',' in linha:
15 print 'Use o . (ponto) como separador decimal.'
16 else:
17 print 'Isso nao parece um numero valido.'
18 print 'TOTAL: %s' % total
|
Vamos analisar as novidades dessa versão:
Linha 8: a nova variavel linha armazena a linha digitada pelo usuário, para verificação posterior.
Linha 9: a linha é convertida em número.
Linha 11: início do bloco que tratará os erros, provavelmente ocorridos na linha 9.
Linha 12: a função len() retorna o número de itens de uma seqüência; nesse caso, o número de caracteres da string linha. Se o número é igual a zero, então a string está vazia.
Linha 13: no caso da string vazia, executamos um break porque o usuário não quer mais digitar.
Linha 14: o operador in (em) retorna verdadeiro se o item à esquerda for encontrado na seqüência à direita; nesse caso verificamos se existe uma vírgula dentro da string linha.
Linha 15: como encontramos uma vírgula, vamos supor que o usuário tentou digitar um número fracionário. Então vamos sugerir que ele use o ponto decimal. Nesse caso, não executamos o break. Nenhum outro comando no bloco if/elif/else será executado, e o loop recomeçará de novo a partir da linha 6.
Linhas 16 e 17: aqui vamos tratar todos os demais casos, dizendo que o que foi digitado não se parece com um número. Novamente, sem o break, o loop reiniciará, e logo o sinal ':' aparecerá na tela aguardando nova digitação.
» Associação de nomes a valores »