[Python] Preciso de ajuda aqui com o global

Galera, é o seguinte eu tenho esse código:

def Adicionar():
global id
soma=1
id = int(id) + int(soma)

Se eu tirar o global id, dá erro falando “local referenced id referenced before assignment”

Eu entendo o porquê, porque não está definido o id, mas não sei como irei fazer pra isso estar sempre somando o numero…

PS: Não posso usar o global id

Alguém pode me ajudar’? Obrigado!

Não é mais facil retornar o valor somado para o id?

def Adicionar(x):
    return int(x) + 1

id = 0
print(id)
id = Adicionar(id)
print(id)

@Ruben_Ribeiro quando você usa int(id) você está querendo converter para inteiro uma variável não declarada e nem inicializada nessa função, esse erro acontece pois você não tem essa variável nessa função. Usando o global id você está declarando uma variável global fazendo com que a variável exista na função, mas não inicializada. Entende ? espero que sim, espero ter explicado bem

Tá sempre aparecendo o número 1… Eu gostaria que el fizesse 1, 2 , 3… Olhe aqui o exemplo de como ficou…

image

[Pessoa 1]

a outra deveria ser

[Pessoa 2]

Ps: Cada vez que inicia o Adicionar() o id fica = 0 e não deveria ser… eu queria que ele fosse buscar o ultimo id adicionado no array…

:confused:

Pois eu sei eu queria ajuda pra saber como posso fazer sem usar o global id e ficar somando o id sempre +1

@Ruben_Ribeiro não tem como eu saber o que está dando errado no programa sem ler o código

Posso enviar pra voce?

Sim, tô aqui pra ajudar no que eu puder

Certo… Vamos então…

Aqui é o código de adicionar a Pessoa…

def Adicionar():
global id
soma=1
id = p.getId()
id = int(id) + int(soma)
nome=input("\nNome -> “)
numero=input(”\nNúmero -> “)
idade=input(”\nIdade -> “)
altura=input(”\nAltura -> “)
peso=input(”\nPeso -> “)
id=str(id)
p = Pessoa(id,nome,numero,idade,altura,peso)
pessoas.append§
print(”\n[!] Pessoa adicionada!\n\n")
return

Como pode ver tô usando global mas não posso usar ele, ele funciona assim… so que não posso usar o global… Basicamente eu queria uma forma de fazer id+1, cada vez que adicionava uma pessoa…

sempre que você cria essa função, você atribui o valor 1 à variável soma, e logo 2 linhas depois você faz:
id = int(id) + int(soma)
é o mesmo que:
id = 1
entende ? por isso que dá sempre 1;-;
aaah, e a respeito do global, ele não vai mudar o valor da variável

Não cara, esse código tá funcionando… Mas só funciona lá com o global… Sem global ele dá erro falando q o id não está atribuido…

deixa eu mostrar pra voce…

Com global:

image

Sem global:

image

Nem deixa eu começar a escrever os dados da pessoa…

Ele funciona mas só com o global como pode verificar… EU queria retirar esse global e adicionar id+1 sempre automaticamente…

Consegue me ajudar? :confused:

Cara, como vc quer que eu adivinhe só postando esse trecho de código, programação mediúnica ainda não existe!

Como vc ta fazendo pra imprimir essa lista?

Ja pesquisou sobre a função enumerate?

for contador, pessoa in enumerate(lista):
    print(contador+1)

Se precisar pode somar + 1 no contador pois ele começa do zero e vai subindo para cada posição da lista…

Obrigado, eu consegui descobrir por mim… Valeu a ajuda na mesma! :slight_smile:

Você me ajuda muito nesse GUJ. +rep

Agora faça um favor e marque como resolvido os outros 2 tópicos que vc abriu a respeito, evite fazer outras pessoas de bobas tentando responder algo que ja teve solução, vc seguindo as boas praticas que tentamos aplicar aqui só tem a ganhar como pessoa e como profissional no futuro (finalizar tarefas e ser organizado por exemplo), boa sorte!

Como faço pra fechar? Nunca usei a GUJ pra fechar post…

vc não fecha, por isso falei pra marcar como resolvido, quem fecha é a moderação…