当省略某些替换值时,使用SymPy subs方法

时间:2018-03-09 13:37:59

标签: python sympy

我正在尝试在pycharm中使用SymPy编写一个程序,该程序将接受两个输入并在函数中替换这些值后打印结果。如果用户只给出一个输入,我想打印替换的函数。这是我的代码

print "<option onclick='javascript:redirectionJavascript(this.value,\"$date\")' selected value='$id_user'>$name</option>";

对于两个值a = 23和b = 34,它返回为输出23 + 34,并且对于一个值,它返回+ 34(因为它不会将输入视为空格)。通过用x, y =symbols('x y') some_function = x + y a = input("Insert first value") b = input("Insert second value") s = some_function.subs({x:a , y:b}) print(s) 替换s,两个值的输出变为57但是对于一个值,我得到语法错误。有没有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

方法subs按预期工作:要替换两个符号,您必须有两个值才能替换它们。

  

如果用户只提供一个输入,我想打印功能

在尝试使用输入之前获取用户输入和调用subs解析验证输入之间的逻辑。方法subsab上调用sympify,并通过创建名称为该字符串的符号来处理可能的错误,例如sympify("") (例如,Symbol(""))。但是你想以不同的方式处理SympifyError。这是一个例子。

try:
    a, b = map(sympify, (a, b))
    if a.is_Number and b.is_Number:   # the user gave numbers, not asdf and qwerty
        s = some_function.subs({x: a, y: b})
        print(s)
    else:
        print(some_function)
except SympifyError:
    print(some_function)