0

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

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

2 回答 2

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))
于 2012-11-01T23:27:57.513 回答
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()
于 2018-07-31T20:28:04.633 回答