Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Exercício de função

Olá, eu estou fazendo um exercício de função, porém esta apresentando erro abaixo quando eu crio a função cria_lista(), o estranho é que se usar outro nome, exemplo imprime() a função funciona. Será que há alguma restrição no nome da função devido eu já usar a lista como uma variável do tipo list?

Traceback (most recent call last): File "/Users/alexandresilva/PycharmProjects/exercicios/funcao_exercicio1.py", line 4, in cria_lista(numero) NameError: name 'cria_lista' is not defined

numero = int(input("Digite um número: "))
lista = []

cria_lista(numero)

def cria_lista(numero, lista):
    for linha in range(0, numero):
        for coluna in range(0, linha + 1):
            lista.append(linha + 1)
        print(lista)
2 respostas

Consegui revolver mudando a ordem da chamada da função para abaixo dela.

numero = int(input("Digite um número: "))

def cria_lista(numero):
    lista = []
    for linha in range(0, numero):
        for coluna in range(0, linha + 1):
            lista.append(linha + 1)
        print(lista)
        lista = []

cria_lista(numero)
solução!

Oi Alexandre, como vai?

O erro NameError: name 'cria_lista' is not defined ocorreu porque você estava chamando a função cria_lista antes de defini-la. Vamos analisar o seguinte código:

numero = int(input("Digite um número: "))
lista = []

cria_lista(numero)

def cria_lista(numero, lista):
    for linha in range(0, numero):
        for coluna in range(0, linha + 1):
            lista.append(linha + 1)
        print(lista)

A ordem das chamadas das funções é extremamente importante, pois o código será interpretado de cima para baixo, então quando você chamou a função cria_lista(numero) ela ainda não havia sido criada, ou seja, antes dessa chamada o código não havia lido nenhuma função cria_lista.

Agora, vamos analisar o seguinte trecho:

numero = int(input("Digite um número: "))

def cria_lista(numero):
    lista = []
    for linha in range(0, numero):
        for coluna in range(0, linha + 1):
            lista.append(linha + 1)
        print(lista)
        lista = []

cria_lista(numero)

Quando você efetuou a chamada da função cria_lista(numero) depois que ela havia sido criada, como o programa irá interpretar o código de cima para baixo, agora ele conseguirá identificar que há uma função chamada cria_lista. Tudo bem?

Qualquer dúvida é só dizer, estou por aqui, tá bom?

Abraços e bons estudos!