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