我正在编写一个程序,让你输入一个三角形的三个角度或边,它告诉它是等边的,等腰等等。我现在不担心其余部分,但是我被困在等边一部分。这是我的代码:
def idtri():
print("\nDo you have all three sides, or al three angles?")
print("(1) Sides")
print("(2) Angles")
choice = input()
if choice == 1:
print("\nType in the lengths of all of the sides.")
t1 = input("1: ")
t2 = input("2: ")
t3 = input("3: ")
print("Your triangle is an equalateral triangle.")
menu()
elif choice == 2:
pass
idtri()
答案 0 :(得分:1)
首先要注意的是,为了将三角形识别为斜角,等角或等边,您所拥有的三个值是角度还是边长并不重要,过程如下:
如果所有三个值相同,则三角形为等边; 否则,如果任何两个值相同,则三角形为等值线; 否则,三角形是斜角。
因此,您可以编写一个简单的函数,根据提供的相等值的数量返回类型:
id_triangle = lambda a, b, c: {0: 'scalene', 1: 'isoceles', 3: 'equilateral'}\
[(a == b) + (a == c) + (b == c)]
然后从交互式脚本中调用它,例如:
print('Your triangle is %s.' % id_triangle(t1, t2, t3))
答案 1 :(得分:1)
您还可以使用Python集合中的计数器:
from collections import Counter
def idtri():
cnt = Counter()
side1 = input('Enter length of first side: ')
cnt[side1] += 1
side2 = input('Enter length of second side: ')
cnt[side2] += 1
side3 = input('Enter length of third side: ')
cnt[side3] += 1
if 3 in cnt.values():
print('Equilateral Triangle')
elif 2 in cnt.values():
print('Isosceles Triangle')
else:
print('Scalene Triangle')
if __name__ == "__main__":
idtri()