quarta-feira, 28 de outubro de 2009

Errar é humano...

Todos nós erramos. E quando estamos a aprender uma nova linguagem de programação, ou mesmo a aprender a programar, os erros são frequentes. E muitas vezes ... básicos. Eis alguns exemplos.

1. Definir uma função e depois nada fazer, esperando que ela por milagre se lembre do que queremos resolver em concreto. É a dualidade definir/usar que nos escapa.

2. Importar um módulo com a instrução "import [nome do módulo]" para usar uma operação [nome da operação] e não qualificar a operação com o nome do módulo no momento do seu uso.


>>> import math
>>> sin(5)
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
NameError: name 'sin' is not defined
>>> math.sin(5)
-0.95892427466313845
>>>


3. Não ter em atenção as consequência da mutabilidade de alguns objectos. Alguns dos métodos modificam o objecto mas não devolvem nenhum valor.


>>> a = [1,2,3]
>>> b = a.append(4)
>>> b # -----> b = None!!
>>> a
[1, 2, 3, 4]
>>> b=a # ----> assim pode-se fazer!
>>> b
[1, 2, 3, 4]
>>>


4. Não ter em atenção que o código deve estar correctamente alinhado.


# caso 1
def dobros(n):
for i in range(n):
d = 2 * i
print d,

dobros(4)
>>> 0 2 4 6

# caso 2
def dobros(n):
for i in range(n):
d = 2 * i
print d, # <----- Aqui

dobros(4)
>>> 6


5. Referir o nome de um objecto que não foi ainda criado.


Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)]
Type "help", "copyright", "credits" or "license" for more information.
>>> a
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
NameError: name 'a' is not defined
>>>


6. Tentar fazer operações impossíveis.


>>> 5 + 'a'
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> 5 / 0
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
ZeroDivisionError: integer division or modulo by zero
>>>


Nalgumas situações o Python avisa-nos do erro. Nestes casos deve ler com atenção a mensagem de erro. E por hoje é tudo.
Há muitos mais erros! Quer contribuir com o seu erro preferido?? É só mandar para o blogue!

Sem comentários:

Enviar um comentário