Home › Fóruns › Fórum Lógica de Programação: O Guia Completo › Operador AND E OR (Exercício 5 Python – solução)
Marcado: Exercício 5 Python – solução
- Este tópico contém 3 respostas, 3 vozes e foi atualizado pela última vez 5 meses, 3 semanas atrás por Jones Granatyr.
- AutorPosts
- 8 de novembro de 2021 às 20:36 #32248
Olá, professor!
Estou com uma dúvida e já fiz algumas pesquisas e acabei me perdendo nessas pesquisas ficando ainda mais confuso, porém, percebi algo que ainda não estou conseguindo compreender.
Quando uma condição é Verdadeira assim como a outra no operador AND o programa executa o passo seguinte.
Quando uma condição é Falsa e a outra também quando se trata do operador OR o programa não executa o passo seguinte, fazendo com que o próximo passo ou linha de código seja a primeira linha, no caso o “print(‘Digite um valor.’)
É natural que isso ocorra devido as condições no operador AND e no OR sejam falsas?
Ou isso se deve a algum erro de atualização?
Ex:
print(‘Digite um valor: ‘)
valor = int(input())if valor >= 1 and valor <= 9:
print(‘Está na faixa permitida.’)
elif valor < 1 or valor > 11:
print(‘Está fora da faixa permitida.’)Nesse caso acima, fazendo a entrada de dados com um valor ’10’, por exemplo, o programa executa aquela linha de cima; (‘Digite um número:’)….ou seja, nenhuma das condições atendeu ao que fosse esperado pelo programa, fazendo com que a ação voltasse a ser executada novamente com uma entrada de um valor esperado.
Não entendi essas condições (valor >= 1 and valor <= 9) e a outra (valor < 1 or valor > 11) …a menos que o intuito fosse mostrar esse meu questionamento porque minha curiosidade se deu após testar a primeira condição de acordo com que eu já imaginasse o próximo passo do programa e na segunda condição já entrei logo com o valor ’10’ para ver o que aconteceria.
Se a primeira linha de código é uma entrada e depois vem as condições, faz sentido o programa pedir um novo valor fazendo com que eu pense que esse pedido seja uma “condição” sendo que não é porque se trata de uma entrada e com isso fazer com que eu entenda que “não funcionou” ou dizer algo do tipo; “programa encerrado, faça novamente dentro das condições pedidas…” ou é uma ‘pegadinha’ ou algo para atentar-se ao que vem a seguir em relação a esse, ao meu ver, ‘suposto problema’?
Estou há umas 7, 8 horas refletindo sobre isso e verifiquei o caminho, verifiquei atualização de Plugins e não encontrei nada relacionado, apesar de aparecer a mensagem de que o processo foi finalizado com êxito e logo acima pedir para que eu digite um valor…estou com um nó em minha cabeça. Rs’
Forte abraço!
10 de novembro de 2021 às 20:46 #32257Olá Helder, ao colocar o número 10 nenhuma mensagem foi impressa porque ele não atendeu nenhuma das condições. O código da aula foi feito dessa forma para parecer mais didático, mas uma forma de deixar ele mais completo seria adicionar a finalização da cláusula com um else, veja um exemplo:
print(‘Digite um valor: ‘) valor = int(input()) if valor >= 1 and valor <= 9: print(‘Está na faixa permitida.’) elif valor < 1 or valor > 11: print(‘Está fora da faixa permitida.’) else: print('Valor não encontrado')
Caso queira compreender um pouco mais sobre essa parte de lógica, recomendo a leitura desse assunto: tabela verdade.
Fabio
11 de novembro de 2021 às 05:31 #32261Olá, Professor! Bom dia!
Agora compreendi, imaginei que houvesse alguma lacuna, algo que pudesse ser diferente naquela situação, porém, vc mostrou que sim utilizando o else e eu não havia me atentado a essa ação por conta de ter ficado em dúvida pela não utilização do número 10, nesta aula, porque uma condição (n >1 and n <=9): e a outra condição (n < 1 or n > 11): e com isso fiquei imaginando: Por que não (n >= 9 ou n >= 10)?! 😅
Mas agora tudo ficou esclarecido, muito obrigado pela atenção e forma simples de explicar, Professor.
Em relação a esse artigo vou ler sim com toda certeza e mais uma vez obrigado pela dica valiosa🤝👍
Um bom dia e bom trabalho, Professor!
10 de maio de 2024 às 11:20 #44770Qualquer outra dúvida é só avisar! 🙂
- AutorPosts
- Você deve fazer login para responder a este tópico.