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…
[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…
…
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
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:
Sem global:
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…
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!
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…