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

[Dúvida] Variáveis com nomes parecidos

Olá, pessoal! Tudo bem?

Percebi que utilizamos duas variáveis com nomes parecidos:

"nome_do_restaurante" dentro da função cadastro_restaurante() e "nome_restaurante" dentro da função listar_restaurante().

Minha dúvida é: podemos mudar o nome de alguma delas para que fiquem iguais, sem que ocorra problemas no código?

Obrigado!

3 respostas

Fala Mateus, blz? Se elas não estiverem no mesmo escopo, pode sim mas pode te dar dores de cabeça mais tarde, conforme o código vai crescendo. Existem dois tipos de variáveis: Global e Local.

Pra resposta aqui não ficar muito extensa, recomendo ler um pouco sobre elas no Google . A variável que está em uma função, é uma variável do tipo local que está disponível apenas para uso dentro da função que ela está "alocada". Nesse caso você pode ter variáveis com o mesmo nome. Como não é uma boa pratica, Tenha sempre em mente o seguinte: seu código pode funcionar, mas não da maneira que você espera.

Diga aí, Victor. Beleza?

Então no caso, eu poderia ter duas variáveis com mesmo nome, mas não é recomendado, isto para evitar confusão.

Outra dúvida, nesta mesma aula, temos alguns 'if' sem 'else', este último não é necessário para fechar o primeiro?

E a linha if not restaurante_encontrado: não deveria estar no mesmo recuo da linha if nome_do_restaurante == restaurante['nome']:? (Pois aquela fecharia a condição desta última?)

Muito obrigado!

solução!

Isso mesmo! O Else é opcional assim como o Elif também é opcional. A utilização deles vai depender do que você quer fazer no seu código. Algumas vezes você vai querer um else no seu códígo, outras você só vai precisar do if mesmo.

Quanto a sua ultima duvida, vamos por partes.

for restaurante in restaurantes:
        if nome_do_restaurante == restaurante['nome']:
            restaurante_encontrado = True
            restaurante['ativo'] = not restaurante['ativo']
            mensagem = f'O restaurante {nome_restaurante} foi ativado com sucesso' if restaurante['ativo'] else f'O restaurante {nome_restaurante} foi desativado com sucesso'
            print(mensagem)
    
    if not restaurante_encontrado:
    print('O restaurante não foi encontrado.')

Nesse código tem um for loop certo? O que estiver endentado no for , será executado dentro do for. O if not restaurante_encontrado não está endentado no for, quer dizer que ele não faz parte do bloco for . Nesse código então, primeiro o bloco do for loop é executado e depois o if not restaurante_encontrado é executado.

Então não é necessário, este ultimo if not restaurante_encontrado estar endentado. Um if não necessariamente depende de uma outra condição pra ser executado, na verdade você está criando esta condição. Agora se você tiver um caso que tenha uma primeira condição e apartir dela você queira testar uma segunda, terceira ou infinitas condições kkk, ai sim você precisar endentar os ifs.

Vou dar um exemplo hipotetico de quando a gente precisa endentar o(s) if(s):

#variavel
numero1 = 8

# você quer saber se é menor que 10
# por algum motivo você quer testar se é igual a 8
if  numero1 < 10:
    if numero1 == 8
        print("Este numero é 8!!!")