Я новичок в программировании. Есть ли способ упростить условные операторы
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')
В качестве примечания вы можете подумать о включении неравенств для случая, когда a b и c вообще не образуют треугольника.






Вы можете сократить сравнения, в которых используется and, используя цепные сравнения и отбрасывая один из тестов (они взаимоисключающие), используя вместо этого else:
if a == b == c:
print('Equilateral triangle')
elif a != b != c != a:
print('Scalene triangle')
else:
print('Isosceles triangle')
Обратите внимание, что синтаксис if Python не требует круглых скобок вокруг тестовых выражений.
Затем вы можете просмотреть эти значения как набор и проверить, сколько элементов находится в наборе:
unique_lengths = len({a, b, c})
if unique_lengths == 1:
print('Equilateral triangle')
elif unique_lengths == 2:
print('Isosceles triangle')
else:
print('Scalene triangle')
Затем это можно превратить в поиск по списку, сопоставив 1, 2 и 3 с именами классов треугольников; Я вставил None в 0 позицию:
classes = [None, 'Equilateral', 'Isosceles', 'Scalene']
print(classes[len({a, b, c})], 'triangle')
Спасибо за помощь. Наш лектор призывает нас использовать скобки. Мы еще не узнали о наборе.
@BiLAL: Тогда ваш лектор идет против стандартное руководство по стилю Python, но пока лучше придерживаться соглашений, которые они установили. :-) Скоро вы столкнетесь с множествами, они могут содержать только уникальные элементы (что проверено на равенство) и допускают быструю проверку принадлежности (этот набор содержит это конкретное значение?), помимо других удобных операций. Превращение a, b, c в набор, когда среди этих 3 переменных есть общие значения, означает, что у вас будет набор с менее чем 3 значениями, и мы можем использовать это, чтобы подсчитать, сколько сторон равны.
Спасибо Мартыджин. Я просмотрел руководство по стилю, и это было очень полезно. Также я начал узнавать о наборах на YouTube. :)
Есть ли какой-либо документ, на который я могу ссылаться и найти список всех возможных сравнений для разных сценариев?
@BiLAL: не уверен, что вы имеете в виду, но это звучит как очень широкий вопрос. Справочная документация для сравнений, на которую я уже ссылался, и документация для стандартных типов охватывают любые операции конкретного типа.
Использование списка:
lis = [a,b,c]
lis.sort()
if lis[0] == lis[-1]:
print("Equilateral triangle")
elif lis[0] == lis[1] or lis[-1] == lis[1]:
print("Isosceles triangle")
else:
print("Scalene triangle")
Спасибо за помощь. Но я еще не узнал о списке.
Это нормально . Но через несколько месяцев вы обнаружите, что коды от Martijn настолько ясны и гениальны.
if a == b == c