我需要以下脚本到 运行 in python 并给我结果?解决简单的数学问题

I need the following script to run in python and give me result? Solving simple mathematical questions

我是 python 的新手。我需要有人帮助我 运行 python 中的一个简单脚本。我附上了代码。我是定义函数和 运行 if else 函数的新手,所以我需要有关如何使以下函数工作的帮助?

我不知道是否有必要定义不同的函数,我知道我在下面的代码中肯定有很多行是错误的。我需要有人帮我修改它

def values():
    p1g = float(input("Player 1 Utility for green"))
    p2r = float(input("Player 2 ulitity for red"))
    p1r = float(input("Player 1 utility for red"))
    p2g = float(input("Player 2 utility for green"))
    d1 = float(input("Player 1 Disagreement point"))
    d2 = float (input("Player 2 Disagreement point"))

    return [p1g,p2r,p14,p2g,d1,d2]

def slope_int(p1g,p2r,p1r,p2g):
   """Returns the slope and intercept of the payoff/utilities"""
   m = (p2g-p2r)/(p1r-p1g)
   c = p2r - ((p2g-p2r)/(p1r-p1g))* p1g
   return [m,c]

def nash_bargaining_x(p1g,p2r,p1r,p2g,d1,d2,m,c):
    return -(p2r -d2 - m*p1g - m*d1)/2*m

def nash_bargaining_y(p1g,p2r,p1r,p2g,d1,d2,m,c):
    return -(p2r -d2 - m*p1g - m*d1) + c # where c = p1g-p2r*((p2g-p2r)/(p1r-p1g)

solution = [nash_bargaining_x(),nash_bargaining_y()]
print (solution)
if abs.(p1g-nash_bargaining_x) > (p1r-nash_bargaining_x):
   solution = "P1 has Red"
else:
   solution = "P2 has red"

期望程序计算脚本中列出的所有值和return用户输入变量所需的值。

在此代码中不需要定义函数。但是,如果您确实定义了这样的函数:

def foo():
   …

然后你必须再次调用它才能使它 运行 像这样:

foo()

如果你不这样做,那么该功能将不会运行。

采用值函数,我会做

p1g,p2r,p14,p2g,d1,d2 = values()

在我调用 slope_int() 之前。 此外,slope_int() 需要有 return 选项卡,与 nash_x 和 nash_y 相同。 然后,我会在解决方案之前按顺序调用所有内容,如下所示:

p1g,p2r,p14,p2g,d1,d2 = values()
m,c = slope_int(p1g,p2r,p1r,p2g)
solution = [nash_bargaining_x(),nash_bargaining_y()]
print(solution)
if abs.(p1g-nash_bargaining_x) > (p1r-nash_bargaining_x):
    solution = "P1 has Red"
else:
    solution = "P2 has red"
print(solution)

我想这就是您要找的东西

但是,我建议不要为此脚本定义函数。需要多次调用的函数需要定义。

好的,让我们分解一下,因为您在使用功能代码的过程中遇到了很多问题。首先,您有一个很好的函数 values() 来获取用户的所有输入,但您从未使用过该函数。您需要调用此函数并保存它的所有输出,如下所示:

def values():

    p1g = float(input("Player 1 Utility for green"))
    p2r = float(input("Player 2 ulitity for red"))
    p1r = float(input("Player 1 utility for red"))
    p2g = float(input("Player 2 utility for green"))
    d1 = float(input("Player 1 Disagreement point"))
    d2 = float (input("Player 2 Disagreement point"))

    return [p1g,p2r,p14,p2g,d1,d2]


[p1g,p2r,p14,p2g,d1,d2] = values()

现在您已准备好在整个代码中使用来自用户的变量。在那之后,你的其他函数定义看起来不错,尽管它们缩进得不好(但这可能只是你没有使用 Stack Overflow 格式):

def slope_int(p1g,p2r,p1r,p2g):
       """Returns the slope and intercept of the payoff/utilities"""
       m = (p2g-p2r)/(p1r-p1g)
       c = p2r - ((p2g-p2r)/(p1r-p1g))* p1g

    return [m,c]

def nash_bargaining_x(p1g,p2r,p1r,p2g,d1,d2,m,c):

    return -(p2r -d2 - m*p1g - m*d1)/2*m

def nash_bargaining_y(p1g,p2r,p1r,p2g,d1,d2,m,c):
    return -(p2r -d2 - m*p1g - m*d1) + c # where c = p1g-p2r*((p2g-p2r)/(p1r-p1g)

即使您在上述函数定义和您的输入中将变量命名为相同的名称,您也不能只调用这些函数并期望它们具有来自您的 values() 函数的变量。您必须显式发送您希望这些函数使用的数字作为参数,如下所示:

solution = [nash_bargaining_x(p1g,p2r,p1r,p2g,d1,d2,m,c),nash_bargaining_y(p1g,p2r,p1r,p2g,d1,d2,m,c)]
print (solution)

现在您的解决方案应该如您所愿,最后要注意的是绝对值的 abs 函数不是用 abs.() 调用的,而是用 abs() 调用的,如下所示:

 if abs(p1g-nash_bargaining_x) > abs(p1r-nash_bargaining_x)
    solution = "P1 has Red"
    else
    solution = "P2 has red"