Jump to content

While não funciona depois de uma tentativa errada


Mil

Postagens Recomendadas

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)j
Nã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

rum de descobridor de triangulo.png

code descobridor de triangulo.png

Link to comment
Compartilhe em outros sites

Oi!

 

Tem um errinho de lógica no seu algoritmo.

 

Vamos fazer um teste de mesa:

  1. ok, tem o print bonitinho e entra num loop "infinito"
  2. Pega as 3 medidas (2,3,4)
  3. 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)
  4. pergunta se quer informar novos valores (vou digitar "batata doce")
  5. verifica se a resposta é não. Caso seja, interrompe o loop. (não é, pois digitei batata doce)
  6. Verifica se a respota é diferente de "sim". Caso seja, pergunta novamente. (é diferente de sim, então entar no if e pergunta novamente)
  7. notifica que nao entendeu e pergunta novamente. (Escrevo "batata frita")
  8. fim do codigo, volta para a linha do while true e repete tudo novamente.
  9. Pega 3 medidas (10,20,10)
  10. 10<20+10? sim, fala que é um triganulo
  11. quer mais valores? "n"
  12. fala que nao entendeu e pergunta novamente "ñ"
  13. 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

1 hora atrás, geovaniif disse:

Oi!

 

Tem um errinho de lógica no seu algoritmo.

 

Vamos fazer um teste de mesa:

  1. ok, tem o print bonitinho e entra num loop "infinito"
  2. Pega as 3 medidas (2,3,4)
  3. 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)
  4. pergunta se quer informar novos valores (vou digitar "batata doce")
  5. verifica se a resposta é não. Caso seja, interrompe o loop. (não é, pois digitei batata doce)
  6. Verifica se a respota é diferente de "sim". Caso seja, pergunta novamente. (é diferente de sim, então entar no if e pergunta novamente)
  7. notifica que nao entendeu e pergunta novamente. (Escrevo "batata frita")
  8. fim do codigo, volta para a linha do while true e repete tudo novamente.
  9. Pega 3 medidas (10,20,10)
  10. 10<20+10? sim, fala que é um triganulo
  11. quer mais valores? "n"
  12. fala que nao entendeu e pergunta novamente "ñ"
  13. 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

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

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.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...