Я пытаюсь найти чистый способ обработки различных взаимоисключающих входов функций. Идея состоит в том, что у меня есть функция, которая возвращает 4 значения (эти значения связаны через математические уравнения), и когда вы вводите одно из 4 значений, оно возвращает все значения.Какой самый Pythonic способ обработки разных взаимоисключающих функций?
В настоящее время функция работает следующим образом:
#example relations are simply: b=1+a, c=0.5*a, d=sqrt(a)
def relations(v, vtype="a"):
if vtype=="a":
a = v
elif vtype=="b":
a = v - 1
elif vtype=="c":
a = 2 * v
elif vtype=="d":
a = v ** 2
b = 1 + a
c = 0.5 * a
d = a ** 0.5
return a,b,c,d
Пользователь указывает, что входной переменной с помощью строки VType, и он возвращает все значения. Пользователь не может вводить несколько разных входных значений (будет избыточным, поскольку все неизвестные могут быть определены из одного входного значения).
Есть ли более чистый и путинский способ сделать это? Задание входной переменной строкой кажется действительно грязной на данный момент.
Заранее благодарен!
Какая часть вашей текущей реализации чувствует себя грязным? –
После ввода пользователем типа ввода в виде строки через переменную vtype. Я имею в виду, давай .... – Wilco
Это более pythonic, чем любой из ответов до сих пор. Единственное, что беспокоит, - это магические константы '' a'', ''b'' и т. Д. – bereal