我正在尝试在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但是对于一个值,我得到语法错误。有没有更好的解决方案?
答案 0 :(得分:1)
方法subs
按预期工作:要替换两个符号,您必须有两个值才能替换它们。
如果用户只提供一个输入,我想打印功能
在尝试使用输入之前获取用户输入和调用subs
:解析和验证输入之间的逻辑。方法subs
在a
和b
上调用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)