我正在制作一个三角形课程查找器而且我被卡住了

时间:2012-11-01 23:02:44

标签: python geometry

我正在编写一个程序,让你输入一个三角形的三个角度或边,它告诉它是等边的,等腰等等。我现在不担心其余部分,但是我被困在等边一部分。这是我的代码:

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()

2 个答案:

答案 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()