Python Def Функция и ввод - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь настроить функцию с помощью ввода. Возможно ли это?

function = input('Please enter a function example')
def f(x): 
 return function 
print(f(2))

Так что, если функция ввода х ** 2, она должна напечатать число 4. Я знаю, что этот синтаксис неправильный, потому что функции - это буквенно-цифровой объект, но мне нужна ваша помощь, чтобы понять, как это сделать правильно

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Я предполагаю, что вы имеете в виду позволить пользователю ввести код (функцию) в качестве ввода. Если это так, то это может быть копия из:

В Python: как преобразовать пользовательский ввод в кусок кода?

0 голосов
/ 06 ноября 2018

Отказ от ответственности : смотрите комментарии, и нет, вы не должны размещать это на веб-странице / сервисе, который, кажется, люди предполагают, что вы пишете. Однако для создания игрушечного калькулятора, который вы запускаете локально дома, этой встроенной функции вполне достаточно.
По вопросам безопасности см. ast, ast.literal_eval для действительно простых случаев. simpleeval имеет приятную упаковку для ast, которую вы можете предпочесть использовать как есть и / или извлечь из нее уроки (https://github.com/danthedeckie/simpleeval/blob/master/simpleeval.py) / disclaimer


Предполагая, что вы имеете в виду, пользователь может ввести функцию:
f = input("Function of x: ")
x = float(input("x: "))
print(eval(f))

Затем введите x+2 для первого ввода, 2 для второго и увидите результат, равный 4:

Function of x: x+2
x: 2
4

Чтобы сделать его более универсальным, вы можете импортировать все из math:

from math import *
f = input("Function of x: ")
x = float(input("x: "))
print(eval(f))

, затем вы можете ввести cos(x), например:

Function of x: cos(x)
x: 3.1415
-0.9999999957076562
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...