Оцените введенное пользователем уравнение с двумя переменными внутри функции - PullRequest
0 голосов
/ 26 марта 2020
function=print(input('Enter a function in terms of x and y: '))

def f(x,y):
    evaluated=eval(function)
    return evaluated

print(f(1,2))

Я выбрал x = 1 и y = 2 случайным образом, но мне нужно, чтобы функция работала для разных значений x и y во всей моей программе.

Ответы [ 3 ]

2 голосов
/ 26 марта 2020

Удалите печать из вашей строки ввода, и ваш код станет.

def f(x,y):
    evaluated = eval(function)
    return evaluated

function = input('Enter a function in terms of x and y: ')
print(f(1,2))

Использование eval таким образом небезопасно для производственного кода.

Это можно сделать безопаснее, выполнив Безопасное использование eval () в python

Проблема с отправленным кодом

function=print(input('Enter a function in terms of x and y: '))

В этой строке все, что вводит пользователь, выводится на экран с помощью процедуры печати. ​​

Процедура печати возвращает значение Нет, назначенное функции.

1 голос
/ 26 марта 2020

Это, вероятно, то, что вы ищете.

def f(x,y):
  evaluated = eval(function)
  return evaluated

function = input("Enter a function in terms of x and y:")
x = int(input("Enter a number"))
y = int(input("Enter a number"))
print(f(x,y))

Хотя использование eval () таким способом не рекомендуется, как предложено @ DarrylG

Также в вашем коде

function=print(input('Enter a function in terms of x and y: '))

Кажется, вы присвоили оператор печати переменной, которая возвращает none. Таким образом, переменная присваивается NoneType.

1 голос
/ 26 марта 2020

Вы, наверное, ищете что-то вроде этого:

function = input('Enter a function in terms of x and y: ')

def f(x, y):
    evaluated = eval(function)
    return evaluated

x = int(input('x: '))
y = int(input('y: '))

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