Мне нужен следующий скрипт для запуска в Python и дать мне результат? Решение простых математических вопросов - PullRequest
0 голосов
/ 10 июля 2019

Я очень новый в питоне. Мне нужен кто-то, кто поможет мне запустить простой скрипт на 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"

ожидайте, что программа рассчитает все значения, перечисленные в скрипте, и вернет значения, требуемые из пользовательских переменных ввода.

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

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

Определение функций не требуется в этом коде. Однако, если вы определите функцию следующим образом:

def foo():
   …

тогда вам нужно вызвать его снова, чтобы он работал так:

foo()

Если вы этого не сделаете, функция не запустится.

Взяв функцию значений, я бы сделал

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

прежде чем я вызову slope_int (). Кроме того, у slope_int () должна быть вкладка возврата, то же самое с 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)

Я думаю, это то, что вы ищете

Однако я бы предложил НЕ , определяющих функции для этого скрипта. Функции должны быть определены, если они будут вызываться несколько раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...