Mil Postado Abril 26, 2022 Compartilhar Postado Abril 26, 2022 Oi, tudo bem? Eu fiz um código de descobrir se 3 valores formam um triângulo. Coloquei o while depois pra repetir a operação caso o usuário desejar, porém, depois de uma tentativa errada (o usuário digitar algo diferente de sim ou não), o comando 'não' não está acionando o break... Codigo: print('Bem-vinde ao Triangulo Descobrinator! \n Informe três valores e eu direi se é um triângulo.') while True: LadoA = int(input("Informe o valor do primeiro lado:")) LadoB = int(input("Informe o valor do segundo lado:")) LadoC = int(input("Informe o valor do terceiro lado:")) if LadoA < LadoB + LadoC: print(f'Os lados {LadoA},{LadoB},{LadoC} formam um triângulo!') else: print('Esses lados não formam um triângulo, pois LadoA > LadoB + LadoC!\n Que pena!') repeticao = input('Deseja informar novos valores? (Digite sim ou não)') if repeticao == 'não': print('Obrigade por usar o Triangulo Descobrinator! \n Até mais!') break elif repeticao != 'sim': repeticao = input('Não entendi, digite apenas sim ou não:') Run: (grifei a parte que deu errado) Bem-vinde ao Triangulo Descobrinator! Informe três valores e eu direi se é um triângulo. Informe o valor do primeiro lado:100 Informe o valor do segundo lado:1 Informe o valor do terceiro lado:1 Esses lados não formam um triângulo, pois LadoA > LadoB + LadoC! Que pena! Deseja informar novos valores? (Digite sim ou não)sim Informe o valor do primeiro lado:1 Informe o valor do segundo lado:2 Informe o valor do terceiro lado:1 Os lados 1,2,1 formam um triângulo! Deseja informar novos valores? (Digite sim ou não)jNão entendi, digite apenas sim ou não:não Informe o valor do primeiro lado:1 Informe o valor do segundo lado:1 Informe o valor do terceiro lado:1 Os lados 1,1,1 formam um triângulo! Deseja informar novos valores? (Digite sim ou não)não Obrigade por usar o Triangulo Descobrinator! Até mais! Process finished with exit code 0 Citar Link to comment Compartilhe em outros sites Outras opções de compartilhamento...
geovaniif Postado Abril 26, 2022 Compartilhar Postado Abril 26, 2022 Oi! Tem um errinho de lógica no seu algoritmo. Vamos fazer um teste de mesa: ok, tem o print bonitinho e entra num loop "infinito" Pega as 3 medidas (2,3,4) verifica se a < b+c e da um resposta adequada pra saber se faz um triangulo (2 < 3+4 -> TRUE, vai printar que é um triangulo) pergunta se quer informar novos valores (vou digitar "batata doce") verifica se a resposta é não. Caso seja, interrompe o loop. (não é, pois digitei batata doce) Verifica se a respota é diferente de "sim". Caso seja, pergunta novamente. (é diferente de sim, então entar no if e pergunta novamente) notifica que nao entendeu e pergunta novamente. (Escrevo "batata frita") fim do codigo, volta para a linha do while true e repete tudo novamente. Pega 3 medidas (10,20,10) 10<20+10? sim, fala que é um triganulo quer mais valores? "n" fala que nao entendeu e pergunta novamente "ñ" volta pro while e repete tudo... Percebeu o erro? A sua verificação verifica só 1 vez, quando na verdade ela deve ficar verificando até digitar algo válido Link to comment Compartilhe em outros sites Outras opções de compartilhamento...
Mil Postado Abril 26, 2022 Autor(a) Compartilhar Postado Abril 26, 2022 1 hora atrás, geovaniif disse: Oi! Tem um errinho de lógica no seu algoritmo. Vamos fazer um teste de mesa: ok, tem o print bonitinho e entra num loop "infinito" Pega as 3 medidas (2,3,4) verifica se a < b+c e da um resposta adequada pra saber se faz um triangulo (2 < 3+4 -> TRUE, vai printar que é um triangulo) pergunta se quer informar novos valores (vou digitar "batata doce") verifica se a resposta é não. Caso seja, interrompe o loop. (não é, pois digitei batata doce) Verifica se a respota é diferente de "sim". Caso seja, pergunta novamente. (é diferente de sim, então entar no if e pergunta novamente) notifica que nao entendeu e pergunta novamente. (Escrevo "batata frita") fim do codigo, volta para a linha do while true e repete tudo novamente. Pega 3 medidas (10,20,10) 10<20+10? sim, fala que é um triganulo quer mais valores? "n" fala que nao entendeu e pergunta novamente "ñ" volta pro while e repete tudo... Percebeu o erro? A sua verificação verifica só 1 vez, quando na verdade ela deve ficar verificando até digitar algo válido Oi, obrigada por responder!! Mas como faço pra ele verificar sempre? Link to comment Compartilhe em outros sites Outras opções de compartilhamento...
geovaniif Postado Abril 26, 2022 Compartilhar Postado Abril 26, 2022 ora, vc ja fez isso no seu script! "Equanto resposta invalida, pergunte!" enquanto...while.... msg_extra = '' while True: resposta = input(msg_extra + 'quer verificar outro triangulo?') if resposta_is_valida(respota): break msg_extra = 'desculpe, resposta invalida! ' Link to comment Compartilhe em outros sites Outras opções de compartilhamento...
geovaniif Postado Abril 26, 2022 Compartilhar Postado Abril 26, 2022 ali no caso, o metodo resposta_is_valida, era só pra abstrar a validação de uma resposta valida (que basicamente é verificar se o texto é "sim" ou "não") 1 Link to comment Compartilhe em outros sites Outras opções de compartilhamento...
Postagens Recomendadas
Crie uma conta ou entre para comentar 😀
Você precisa ser um membro para deixar um comentário.
Crie a sua conta
Participe da nossa comunidade, crie sua conta.
Criar minha conta agoraÉ bem rápido!
Entrar
Você já tem uma conta?
Entrar agoraFaça o login agora.