Я делаю функцию преобразования единиц для Python для удовольствия.Элегантный список условий в Python
Это мой код, до сих пор:
def UnitConverter(number,*units):
if units == ("feet","inches"):
return number*12
elif units == ("ft","yd"):
return number/3
Вы, вероятно, получить представление о том, как у меня эту работу.
Потому что я одержим элегантностью, хорошей практикой кода и общим потоком, я хочу знать, что вы, кодеры, думаете об этом вообще, в дополнение к моему основному вопросу: Как я могу эффективно проверить список перестановки в заявлении if
?
Пример: Есть ли эффективный способ сделать эту работу?
def UnitConverter(number,*units):
if units == (("feet" or "foot" or "ft."),("inches" or "in" or "in.")):
return number*12
elif units == ("ft","yd"):
return number/3
Если нет, то есть способ перестроить свою программу таким образом, что кто-то может ввести три аргумента number
, unit1
, unit2
таким образом, что на конце кодирования, я фактически может включать в себя все альтернативные варианты написания каждого блока (feet
, foot
, ft
, etc
)?
Я действительно ценю мнение каждого.
Спасибо!
Почему вы принимающему '* units', а затем несколько раз неявно заставляя его быть два значения, вместо того, чтобы просто принимать, скажем, 'fromunit, tounit' как два отдельных параметра? – abarnert
Кроме того, попытка обработки декартова произведения N единиц с N-1 другими устройствами будет означать много кода, если N намного лучше, чем 3.Почему бы не сделать это в два этапа: конвертировать из 'fromunit' в каноническую единицу, а затем преобразовать из канонического элемента в' tounit'. Тогда вам нужны только условия N * 2 'if' вместо N ** 2. – abarnert
+1 для abarnert, за исключением того, что make 'from_unit' и' to_unit' –