Хорошо, давайте разберемся с этим, поскольку у вас есть ряд проблем с вашим функциональным кодом.Во-первых, у вас есть хорошая функция 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()
Теперь у вас есть свои переменные от пользователя, готовые для использования в вашем коде.После этого ваши другие определения функций выглядят хорошо, хотя они имеют плохой отступ (но, вероятно, вы просто не знакомы с форматированием переполнения стека):
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"