1
resposta

Resposta da atividade de seleção Nível 3

a alternativa dada como certa não está separando o teste 'and' do 'or'

selecao = (alunos.Idade > 10) &  (alunos.Idade < 20) | (alunos.Idade >= 40)
alunos[selecao]


acredito que o certo seja:

selecao = ((alunos.Idade > 10) &  (alunos.Idade < 20)) | (alunos.Idade >= 40)
alunos[selecao]
1 resposta

Oi Matheus! Tudo bem com você?

Na verdade, as duas maneiras dão certo, tanto a do exercício, como da forma que você escreveu, observe:

Imagem com o dataframe gerado pelo códigp do exercício e o gerado pelo código do aluno, que são exatamente os mesmos

Isso porque como o exercício solicita uma visualização dos alunos com idade entre 10 e 20 anos ou com idade maior ou igual a 40 anos, ao utilizar a resposta indicada pelo exercício:

selecao = (alunos.Idade > 10) &  (alunos.Idade < 20) | (alunos.Idade >= 40)

O que ele vai fazer é exatamente isso: selecionar os alunos com idade maior que dez anos e que tenham menos de 20 anos ou idade maior ou igual a 40.

Portanto, quando o programa for selecionar os alunos que tenham menos de 20 anos ou mais de 40, ele já vai estar limitado a selecionar apenas entre aqueles que possuem mais de 10 anos.

O que poderia gerar um resultado incorreto, seria caso, ao invés do and o or fosse colocado primeiro, porque aí ele iria selecionar primeiro aqueles com idade menor que 20 (incluindo os menores que 10) ou maior que 40. E só depois disso que a seleção seria limitada a escolher apenas os que tivessem mais de 10 anos.

Espero que tenha conseguido te ajudar :)

Qualquer dúvida estou por aqui, tá bom?

Bons estudos!