简化条件运算符python

BiL*_*LAL 0 python

我是编程的新手.有没有办法简化条件运算符

a = 50; b = 70; c = 60; 

# Classification 

if (a == b and b == c and c ==a):
   print('Equilateral triangle')

elif (a == b or b == c or c == a):
   print('Isosceles triangle')

elif (a!=b and b!=c and c!=a):
   print('Scalene triangle')
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

您可以and通过使用链式比较缩短使用的比较,并通过删除其中一个测试(它们是互斥的),使用else:

if a == b == c:
   print('Equilateral triangle')

elif a != b != c != a:
   print('Scalene triangle')

else:
   print('Isosceles triangle')
Run Code Online (Sandbox Code Playgroud)

请注意,Python的if语法不需要围绕测试表达式的任何括号.

接下来,您可以将这些值看作一个集合,并测试集合中的元素数量:

unique_lengths = len({a, b, c})

if unique_lengths == 1:
   print('Equilateral triangle')

elif unique_lengths == 2:
   print('Isosceles triangle')

else:
   print('Scalene triangle')
Run Code Online (Sandbox Code Playgroud)

然后可以变成列表查找,映射1,2并且3以三角形类名; 我None进入了这个0位置:

classes = [None, 'Equilateral', 'Isosceles', 'Scalene']
print(classes[len({a, b, c})], 'triangle')
Run Code Online (Sandbox Code Playgroud)