Line 22 is this:
print(dados)
Let's organize the code and put comments to make it easier to understand:
#Aqui é apenas um função, ela só será executada se for explicitamente chamada pelo código
def pesquisa_de_surfista(pesquisa):
dados = {}
for linha in arquivo:
(ID, nome, pais, média, prancha, idade) = linha.split(";")
dados[ID] = (nome, pais, média, prancha, idade)
print(ID)
if pesquisa == ID:
arquivo.close()
#Aqui começa efetivamente o código a ser executado, a função terminou
arquivo = open("surfing_data.csv")
id_de_verificação = int(input("Insira a ID do surfista desejado: "))
sufista = pesquisa_de_surfista(id_de_verificação)
if sufista:
print("ID: " + sufer['id'])
print("Nome: " + sufer['nome'])
print("Pais: " + sufer['pais'])
print("Média: " + sufer['média'])
print("Prancha: " + sufer['prancha'])
print("Idade: " + sufer['idade'])
print(dados)
The pesquisa_de_surfista
function is totally separate from the rest of the code. What is inside does not exist outside.
Then dados
on line 22 does not even exist. This is called scope . It exists within the function. If you want to pass the data from inside the function to outside it should return something.
Probably the solution would be:
def pesquisa_de_surfista(pesquisa):
dados = {}
for linha in arquivo:
(ID, nome, pais, média, prancha, idade) = linha.split(";")
dados[ID] = (nome, pais, média, prancha, idade)
print(ID)
if pesquisa == ID:
arquivo.close()
return dados
arquivo = open("surfing_data.csv")
id_de_verificação = int(input("Insira a ID do surfista desejado: "))
sufista = pesquisa_de_surfista(id_de_verificação)
if sufista:
print("ID: " + sufer['id'])
print("Nome: " + sufer['nome'])
print("Pais: " + sufer['pais'])
print("Média: " + sufer['média'])
print("Prancha: " + sufer['prancha'])
print("Idade: " + sufer['idade'])
print(sufista)
The code probably has other errors.
I've placed it on GitHub for future reference .