怎么使用用户输入定义变量值

本教程将介绍如何使用用户输入定义变量值的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么使用用户输入定义变量值 教程 第1张

问题描述

我遇到了一个我不太知道怎么解决的问题。我在试着用求解器解一个简单的方程式。然而,我想要它,这样你就可以求解任何你想要的变量,并给出你想要的其他常量的任何值。

from sympy import *
a, b, c, d=symbols('a b c d')

constants=[]
input1=list(input('input variables for a,b,c,and d'))
for value in input1:
 try: 
  int_values=int(value)
  constants.append(int_values)
 except: 
  solve_for=value

equation=solveset(a + (b-1) * c-d, solve_for)
print (equation)

这当然是不完整的,因为a、b、c和d的值没有赋值。到目前为止,我设置的方法是,对于输入1,如果用户想要求解一个变量,他们只需输入变量名,如果他们想给变量赋值,他们输入变量的值。问题归根结底是,我怎么设置它,以便用户可以为常量表赋值?即

def_var_vale=list(input('define what variables are in constants'))
def_var_value[0],def_var_value[1],def_var_value[2]=constants[0],constants[1],constants[1]

以上不起作用,但逻辑是:

#input
def_var_value=[b, c, d]
constants=[1,2,3]
#desired output
b=1
c=2
d=3
# defined variables and their values to be used for the equation 

或其他方法,也许更简单/更干净:

for letter,number in zip(def_var_value,constants):
letter=number

或类似的性质。但当然,这也不能定义它们。我在想,也许你可以创建一本词典,其中a:1,b:2和c:3,但在这一点上,我只是在胡乱乱想。因此,如有反馈,我们将不胜感激!

推荐答案

我不确定,但这可能是您想要的:

from sympy import *

a, b, c, d = syms = symbols('a b c d')
eq = a + (b-1) * c-d

constants=[]
input_string = '1 2 3 d'
input_words = input_string.split()
rep = {}
for word, sym in zip(input_words, [a,b,c,d]):
 if word.isalpha():
  solve_for = sym
 else:
  rep[sym] = int(word)

soln = solveset(eq.subs(rep), solve_for)

print(soln)

基本上我们构建一个字典并将其传递给subs:

In [1]: (x + 2*y)Out[1]: x + 2⋅y

In [2]: (x + 2*y).subs({x: 5}) 
Out[2]: 2⋅y + 5

好了关于怎么使用用户输入定义变量值的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。