3
I’m in some trouble and I don’t know how to fix it:
1) An equilateral triangle, three equal sides and angles = 60°, is read as an isosceles triangle (two equal sides).
2) In addition to printing wrong, I can’t remove that 'NONE'.
3) When the triangle has one of the angles = 90, it is rectangle. But the program does not recognize.
4) The fourth and final problem is that I don’t know how to restart the program: 'Type S to restart or N to finish the program'
Can someone help me ???
import math
# lado a
a = int(input('Digite o valor de um dos lados do triângulo '))
# lado b
b = int(input('Digite o valor do outro lado do triângulo '))
# angulo entre a e b
m = int(input('Digite o ângulo entre estes dois lados '))
ab = (m*math.pi)/180
# calculo do lado c
def lado_c ():
global a,b,c,ab
c = math.sqrt(a**2 + b**2 - 2*a*b*math.cos(ab))
return round(c,2)
# angulo entre a e c
def angulo_ac ():
global a,b,c,ac
n = ((a**2+c**2)-(b**2))/(2*a*c)
ac = (math.acos(n)*180)/math.pi
return (round(ac,2))
# angulo b e c
def angulo_bc ():
global a,b,c,bc
p = ((c**2+b**2)-(a**2))/(2*b*c)
bc =(math.acos(p)*180)/math.pi
return (round(bc,2))
# perímetro
def perimetro ():
global P,a,b,c
P =(a+b+c)
return P
# área
def area ():
global a,b,c,P,A
p = (a+b+c)/2
A = float(math.sqrt(p*(p-a)*(p-b)*(p-c)))
return A
# altura
def altura ():
global A
h = (A*2)/c
return h
# classificação quanto aos lados
def lado_class ():
global a,b,c,ab
if a!=b and a!=c and b!=c:
print ('Escaleno')
elif ab == 60 and a == b and b == c:
print ('Equilátero')
elif a != b and b == c or b !=c and c == a or c !=a and a==b:
print ('Isósceles')
return
# classificação quanto aos angulos
def angulo_class ():
global ab, ac, bc
if ab == 90 or bc == 90 or ac == 90:
print ('Retângulo')
elif ab < 90 and bc < 90 and ac < 90:
print ('Acutângulo')
elif ab > 90 and bc < 90 and ac < 90 or bc > 90 and ac < 90 and ab < 90 or ac > 90 and ac < 90 and ab < 90 :
print ('Obtusângulo')
return
#-----------------------------------------------------------------------------
print ('Lado c = '+ str(round(lado_c (),2)))
print ('Ângulo entre a e c '+str(angulo_ac ()))
print ('Ângulo entre b e c '+str(angulo_bc ()))
print('Área = '+str(round(area (),2))+' unidades de área')
print('Perímetro = '+str(round(perimetro(),2))+' unidades de comprimento')
print ('Altura, em relação ao lado c = '+str(round(altura (),2))+' unidades de comprimento')
print(lado_class ())
print (angulo_class ())
> import math
# lado a
a = int(input('Digite o valor de um dos lados do triângulo '))
# lado b
b = int(input('Digite o valor do outro lado do triângulo '))
# angulo entre a e b
m = int(input('Digite o ângulo entre estes dois lados '))
ab = (m*math.pi)/180
# calculo do lado c
def lado_c ():
global a,b,c,ab
c = math.sqrt(a**2 + b**2 - 2*a*b*math.cos(ab))
return round(c,2)
# angulo entre a e c
def angulo_ac ():
global a,b,c,ac
n = ((a**2+c**2)-(b**2))/(2*a*c)
ac = (math.acos(n)*180)/math.pi
return (round(ac,2))
# angulo b e c
def angulo_bc ():
global a,b,c,bc
p = ((c**2+b**2)-(a**2))/(2*b*c)
bc =(math.acos(p)*180)/math.pi
return (round(bc,2))
# perímetro
def perimetro ():
global P,a,b,c
P =(a+b+c)
return P
# área
def area ():
global a,b,c,P,A
p = (a+b+c)/2
A = float(math.sqrt(p*(p-a)*(p-b)*(p-c)))
return A
# altura
def altura ():
global A
h = (A*2)/c
return h
# classificação quanto aos lados
def lado_class ():
global a,b,c,ab
if a!=b and a!=c and b!=c:
print ('Escaleno')
elif ab == 60 and a == b and b == c:
print ('Equilátero')
elif a != b and b == c or b !=c and c == a or c !=a and a==b:
print ('Isósceles')
return
# classificação quanto aos angulos
def angulo_class ():
global ab, ac, bc
if ab == 90 or bc == 90 or ac == 90:
print ('Retângulo')
elif ab < 90 and bc < 90 and ac < 90:
print ('Acutângulo')
elif ab > 90 and bc < 90 and ac < 90 or bc > 90 and ac < 90 and ab < 90 or ac > 90 and ac < 90 and ab < 90 :
print ('Obtusângulo')
return
#-----------------------------------------------------------------------------
print ('Lado c = '+ str(round(lado_c (),2)))
print ('Ângulo entre a e c '+str(angulo_ac ()))
print ('Ângulo entre b e c '+str(angulo_bc ()))
print('Área = '+str(round(area (),2))+' unidades de área')
print('Perímetro = '+str(round(perimetro(),2))+' unidades de comprimento')
print ('Altura, em relação ao lado c = '+str(round(altura (),2))+' unidades de comprimento')
print(lado_class ())
print (angulo_class ())
I also published the code here (it is better to view): https://code.sololearn.com/cUh4dY3oul2A/#py
First of all, do the [tour] to learn how to use the site.
– Woss
Why does it seem to have duplicate code in question? You have pasted twice or are different?
– Woss
@Raphael , in item 1, if a triangle has two equal sides and has 60 degrees between them, you can guarantee that it is equilateral. Then, the if could be
ab == 60 and a == b
.– lemoce
@Raphael, NONE is because it is printing the empty Return.
– lemoce