Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Respostas duplicadas e IF e ELSE

Olá desde o inicio tive um problema com IF e ELSE, não consegui usar ELSE no código sempre apontava erro de syntaxe, optei por usar somente o IF e o código funcionou, agora me encontro em um outro problema que não consigo resolver, uma das idades está duplicada nas respostas, o código mostra 18 anos com permissão e sem permissão para dirigir.Print do código

1 resposta
solução!

Olá, Christian. Tudo bem?

Vamos ver o seu primeiro código.

A ideia da função é verificar se a pessoa possui a idade necessária para dirigir, certo?

No seu segundo IF (if idade <= 18), você esqueceu de colocar a indentação, aquele pequeno espaço para a direita. O Python precisa dessa indentação, se não vai dar erro mesmo.

Nesse caso, o print abaixo do seu segundo IF deveria estar mais para a direita, pois esse print só será "ativado" quando entrar no IF. Isso ocorre no código inteiro, o código que vai dentro da função está mais pra direita, a chamada da função que está dentro do for está pra direia, e assim vai... Se o código não for indentado, vai virar uma bagunça :D

Temos um probleminha no seu segundo IF, que está causando essa confusão com a idade certa não poder dirigir, mas por enquanto vamos só trocar esse segundo IF pelo ELSE. Vou abordar isso no segundo código, beleza?

Lembrando que estou utilizando a seguinte lista de idades:

idades = [18, 22, 15, 50]

Com o ELSE, seu código ficará assim:

def verifica_se_pode_dirigir(idade):
  if idade >= 18:
    print(f'{idade} anos de idade, TEM permissão para dirigir')
  else:
    print(f'{idade} anos de idade, NÃO TEM permissão para dirigir')

for idade in idades: 
  verifica_se_pode_dirigir(idade)

Saída:

18 anos de idade, TEM permissão para dirigir

22 anos de idade, TEM permissão para dirigir

15 anos de idade, NÃO TEM permissão para dirigir

50 anos de idade, TEM permissão para dirigir

Beleza, agora estamos utilizando o ELSE, lembrando de fazer a indentação corretamente, ou seja, colocando o print abaixo do ELSE mais pra direita.

Agora, vamos para o segundo código.

Dessa vez, vamos considerar o seu segundo IF (if idade <= 18) e entender o que está acontecendo pra ele exibir "18 anos e não pode dirigir".

Uma coisa que acontece quando você não utiliza o ELSE mas utiliza outro IF, é que os dois IF's serão executados.

Vamos ver um exemplo prático, onde vou utilizar a idade 18:

Como sabemos, a idade vai passar pelos dois IF's, então vai ser perguntado, primeiro, se ela é maior ou igual a 18, que no caso ela é igual, então vai exibir que pode dirigir.

Agora, perceba a pergunta que você está fazendo no seu segundo IF. Você está perguntado se a idade é menor ou IGUAL a 18. Percebeu? Como estamos testando com 18, sabemos que a idade é igual a 18, por isso vai exibir que a pessoa não pode dirigir, mesmo ela tendo 18 anos.

Então, como faríamos pra resolver esse segundo IF?

Bom, se é na parte do IGUAL que tá dando problema, vamos tirar ele. É uma boa resposta. Porém, os dois IF's continuariam sendo executados, por isso é melhor optarmos pelo ELSE, pois só vai cair no ELSE se o IF for falso, ou seja, se a idade for menor que 18.

O seu segundo código ficaria assim:

def verifica_se_pode_dirigir(idade):
    for idade in idades:
        if idade >= 18:
            print(f'{idade} anos de idade, TEM permissão para dirigir')
        else:
            print(f'{idade} anos de idade, NÃO TEM permissão para dirigir')

verifica_se_pode_dirigir(idades)

Saída:

18 anos de idade, TEM permissão para dirigir

22 anos de idade, TEM permissão para dirigir

15 anos de idade, NÃO TEM permissão para dirigir

50 anos de idade, TEM permissão para dirigir

 

Espero ter ajudado, Christian. Se tiver mais alguma dúvida, estou à disposição. Bons estudos =)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!