Compreender e corrigir erros de sintaxe comuns em Python

Comentários: 0

Cada linguagem de programação tem um conjunto de regras ou gramática que segue. Quebrar estas regras resulta naquilo a que chamamos erros de sintaxe python, que podem fazer com que o teu código falhe. Estes problemas acontecem a toda a gente - quer esteja apenas a começar, quer já esteja a programar há anos. Se alguma vez te perguntaste "o que são erros de sintaxe em Python?". Este artigo cobre os mais comuns e explica como corrigi-los enquanto está a programar.

Erros comuns de Python e correcções

Quando ocorre um erro de sintaxe em Python, ele fornece uma mensagem que aponta para o problema. Esta mensagem normalmente inclui:

  • O nome do ficheiro e o número da linha onde ocorreu o problema.
  • A linha de código específica que está a causar a falha.
  • Um acento circunflexo (^) que aponta para o local exato onde o intérprete se confundiu.
  • Uma descrição da avaria que indica a natureza do problema.

Vamos dar uma olhadela aos erros de sintaxe comuns em Python que os programadores encontram frequentemente.

Parênteses em falta ou desencontrados

Um dos erros mais comuns que os principiantes cometem é esquecerem-se de fechar os parênteses. Isto é especialmente comum em chamadas de funções e estruturas aninhadas.

Exemplo:

print("Hello, World!"

Mensagem de problema:

1.png

Fixar:

Certifique-se de que todos os parênteses estão corretamente fechados.

print("Hello, World!")

Erros de indentação em Python

A indentação especifica os blocos do código. Podem surgir erros de sintaxe Python se houver um problema com a indentação.

Exemplo:

def greet():
print("Hello, World!")

Mensagem de emissão:

2.png

Fixar:

Indentar corretamente o bloco de código.

def greet():
    print("Hello, World!")

Erros de pontuação em listas ou dicionários

Esquecer-se de colocar vírgulas entre elementos de listas ou dicionários é outro erro frequente.

Exemplo:

fruits = {"type": "sweert" "name": "orange"}

Mensagem de problema:

3.png

Fixar:

Acrescentar a vírgula em falta entre "sweert" e "name".

fruits = {"type": "sweert", "name": "orange"}

Palavras-chave reservadas do Python mal utilizadas

A utilização incorrecta destas palavras-chave também pode resultar em problemas de sintaxe. As palavras-chave são palavras reservadas que têm um significado especial.

Exemplo:

class = "Beginner"

Mensagem de emissão:

4.png

Fixar:

Escolha um nome diferente que não seja uma palavra-chave reservada.

level = "Beginner"

Nomes de variáveis ilegais

Os nomes das variáveis devem respeitar regras específicas. A utilização de nomes de variáveis ilegais, tais como começar com um número ou conter espaços, resulta em erros de sintaxe Python.

Exemplo:

2name = "John"

Mensagem de problema:

5.png

Fixar:

Utilizar um nome de variável válido.

name2 = "John"

Cordas não fechadas

As cadeias de caracteres devem ser colocadas entre aspas correspondentes. Esquecer-se de fechar uma cadeia de caracteres resulta num problema de sintaxe.

Exemplo:

message = "Hello, World!

Mensagem de problema:

6.png

Fixar:

Certifique-se de que a cadeia de caracteres é fechada com o mesmo tipo de aspas.

message = "Hello, World!"

Dois pontos em falta em declarações compostas

Pode ocorrer um problema de sintaxe se faltarem dois pontos (:) no final de uma instrução condicional composta, como if, for, while ou def.

Exemplo:

def greet()
    print("Hello, World!")

Mensagem de problema:

7.png

Fixar:

Acrescentar dois pontos no final da expressão composta.

def greet():
    print("Hello, World!")

Operador de atribuição Python mal colocado

A utilização incorrecta de operadores pode causar erros de sintaxe Python. Isto inclui operadores de atribuição e operadores de comparação.

Exemplo:

if x = 10:
    print("x is 10")

Mensagem de problema:

8.png

Fixar:

Utilizar o operador de comparação correto.

if x == 10:
    print("x is 10")

Dicas para evitar erros cometidos com frequência ao usar Python

  1. A edição com notebooks Jupyter ou VS Code ajuda a destacar sinais e problemas comuns à medida que escreve ou modifica código no editor.
  2. Escreva e teste o código de forma incremental: isto ajuda-o a verificar o código Python quanto a erros de sintaxe numa fase inicial e a corrigi-los antes que se tornem mais difíceis de detetar.
  3. Indentação consistente: utilize consistentemente espaços ou separadores na indentação para evitar confusões e problemas
  4. Utilize ferramentas de linting: execute o pylint ou o flake8 no seu código para verificar se existem partes potencialmente problemáticas, bem como a adesão às normas de codificação.
  5. Consulte a documentação: tenha sempre à mão a documentação oficial para compreender as regras de sintaxe e as convenções da linguagem.

Tratamento de erros de sintaxe na prática

Consideremos um script simples de raspagem da Web que encontra quaisquer erros e ajuda a compreender como corrigir erros de sintaxe no depurador incorporado em python, pdb.

Depuração de um script de raspagem da Web com pdb

Código original:

import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

titles = soup.find_all("h1")
for title in titles
    print(title.text)

Mensagem de problema:

9.png

Fixar:

Adicione os dois pontos que faltam após o loop for.

import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

titles = soup.find_all("h1")
for title in titles:
    print(title.text)

Utilizar o pdb para depurar:

Adicione a seguinte linha antes do loop para iniciar o depurador.

import pdb; pdb.set_trace()

Adicionar código de blackout com marcas de quebra:

import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

titles = soup.find_all("h1")
import pdb; pdb.set_trace()
for title in titles:
    print(title.text)

Quando executar o script, o depurador pdb será iniciado no ponto de interrupção.

> /path/to/your/script.py(10)()
-> for title in titles:
(Pdb)

Comandos de depuração:

  • n (next): executa a linha de código seguinte.
  • c (continuar): prossegue a execução até atingir o ponto de paragem seguinte.
  • p variable_name: imprime o valor do variable_name.

Exemplo de sessão:

(Pdb) n
> /path/to/your/script.py(11)()
-> print(title.text)
(Pdb) p titles
[<h1>Example Domain</h1>]
(Pdb) c
Example Domain

Com o pdb, pode percorrer continuamente o seu programa, observar os valores de diferentes variáveis e compreender como o código é executado, permitindo a rápida deteção e correção de problemas.

Evitar erros de tempo de execução do Python

Utilizando o pdb, pode percorrer o seu programa, verificar os valores de variáveis importantes e seguir o fluxo de controlo para localizar erros e erros lógicos. Problemas como a divisão por zero, o acesso a itens fora do intervalo numa lista ou a utilização de variáveis indefinidas são problemas comuns que podem ser detectados desta forma.

Exemplo:

numbers = [1, 2, 3]
print(numbers[3])

Mensagem de problema:

10.png

Fixar:

Certificar-se de que está a aceder a índices de lista válidos.

print(numbers[2])

Tratamento de excepções

Os blocos Try-except permitem-lhe envolver o código que pode causar problemas. Ao detetar estes problemas, o seu programa pode continuar a funcionar sem problemas, mesmo que encontre erros de sintaxe no seu código.

Exemplo:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("You can't divide by zero!")

Considerações finais

Familiarizar-se com erros comuns e rever exemplos de erros de sintaxe em Python é algo que todos os programadores devem fazer. Quanto mais prestar atenção às mensagens de diagnóstico - e quanto mais rápido as corrigir - mais fácil será a execução do seu código. Utilize ferramentas e dicas que realmente apoiem o seu trabalho.

Comentários:

0 Comentários