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!