В чем разница между двумя решениями (Python)
Есть два решения, на мой взгляд, они оба правильные, может я что-то упускаю. Даже если во 2 решении в if поменять оператор and на оператор <, то решение перестает быть верным.
1 решение:
f = input()
s = input()
th = input()
if f < s and f < th:
print(f)
elif s < f and s < th:
print(s)
else:
print(th)
2 решение:
f = input()
s = input()
th = input()
if f < s < th:
print(f)
elif s < f and s < th:
print(s)
else:
print(th)
Задача отсюда.
2.2 Условный оператор № I
Ответы (2 шт):
В первом решении проверяется соотношение между целевой переменной (например f) и оставшимися
Во втором - указывается явный порядок для всех трех переменных f < s < th: - однако данное выражение будет неверно в случае f < th < s: - хотя f останется минимальным элементом.
Выражение
а < b and b < cзначит вот что:Тогда очередность всех элементов полностью определенна, и мы можем вместо этого выражения спокойно использовать тоже
а < b < c.Но в случае
a < b1 and a < b2
(я намеренно здесь использовалb1иb2, а неbиc, чтобы подчеркнуть разницу),очередность между
b1иb2неопределенна (b1 < b2илиb1 > b2?):Потому мы не можем писать ни
а < b1 < b2, ниа < b2 < b1.Но в этом случае мы можем вместо
a < b1 and a < b2применитьa < min(b1, b2).


