Oi, Amanda. Tudo bem?
Fico muito feliz em ver você testando caminhos diferentes para resolver o problema. Esse é o melhor jeito de aprender programação!
A sua lógica interna para classificar os triângulos (Equilátero, Isósceles e Escaleno) está muito boa e funciona bem. Mas, precisamos ter atenção à condição inicial que você usou para verificar se os lados realmente formam um triângulo.
Vamos analisar alguns pontos importantes para te ajudar a ajustar seu código:
1. A Regra de Existência de um Triângulo
Pra que três medidas formem um triângulo, a regra matemática diz que a soma de dois lados deve ser sempre maior que o terceiro lado. Isso deve valer para todas as combinações.
No seu código, você usou o operador or:
if n1+n2 > n3 or n2+n3 > n1 or n1+n3 > n1:
O problema aqui é que, se apenas uma dessas condições for verdadeira, o programa aceitará os números como um triângulo. Por exemplo, se você digitar os lados 10, 1 e 1, a condição 10 + 1 > 1 é verdadeira, mas esses valores não conseguem fechar um triângulo na vida real.
O ideal é usar o and, garantindo que todas as condições sejam atendidas ao mesmo tempo.
2. Pequeno ajuste na última condição
Na sua última verificação do if, há um detalhe de digitação: n1+n3 > n1. O correto para validar o terceiro lado seria n1+n3 > n2.
3. Comparação encadeada
Sua lógica para o triângulo equilátero n1==n2==n3 é excelente e o Python entende isso perfeitamente. Já para o escaleno, usar n1 != n2 != n3 pode ser traiçoeiro em alguns casos. O mais seguro para garantir que os três são diferentes entre si é comparar todos os pares: n1 != n2 and n2 != n3 and n1 != n3.
Como seu código ficaria com os ajustes:
n1 = float(input('Digite o tamanho do primeiro lado: '))
n2 = float(input('Digite o tamanho do segundo lado: '))
n3 = float(input('Digite o tamanho do terceiro lado: '))
# Trocamos o 'or' pelo 'and' para garantir a regra matemática
if (n1 + n2 > n3) and (n2 + n3 > n1) and (n1 + n3 > n2):
if n1 == n2 == n3:
print('É um triângulo Equilátero')
elif n1 == n2 or n1 == n3 or n2 == n3:
print('É um triângulo Isósceles')
else:
# Se não é equilátero nem isósceles, só pode ser escaleno
print('É um triângulo Escaleno')
else:
print('Não é um triângulo')
Percebe como o else final ajuda a simplificar? Se ele passou no primeiro if (é um triângulo) e não caiu nas regras de lados iguais ou dois iguais, ele obrigatoriamente terá os três lados diferentes.
Você está no caminho certo!
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!