2016-11-27 121 views
-1

如何將字符串輸入解析爲適當的形式,以便將其作爲lambda函數中的映射規則執行?將字符串輸入解析爲lambda函數(Python)

fx=type(input("Enter a polynomial: ")) 

這是我的輸入,我想輸入arbirtray多項式。

f= lambda x: fx 

現在我想我的lambda函數,以便能夠從,就如同他們就像x**2例如法線貼圖規定輸入函數執行字符串。

+0

你的問題不清楚。你的意思是你想要輸入一個表示多項式的字符串並將其存儲在變量'fx'中,然後將其解析爲可以更容易地評估的新字符串格式?或者你想要一個函數來評估該字符串,並可以在另一個lambda函數中使用?或者是其他東西?我希望你意識到你寫的lambda表達式是沒有意義的。 –

+0

除非您使用Python 2.x,'fx'將始終爲'str'。 – jonrsharpe

+0

是的,我想做第二個選項。表達式是一個更大的程序的一部分,這只是導致我的問題的部分 –

回答

1

首先,input()在Python 2和Python 3中的行爲有所不同,如this答案中指定的那樣。

eval()是最簡單的一個選項:

的Python 3

>>> fx = input("Enter a polynomial: ") 
Enter a polynomial: x**2 + 2*x + 1 
>>> f = lambda x: eval(fx) 
>>> f(1) 
4 

的Python 2

>>> fx = raw_input("Enter a polynomial: ") 
Enter a polynomial: x**2 + 2*x + 1 
>>> f = lambda x: eval(fx) 
>>> f(1) 
4 

不過要小心,因爲eval()可以執行任意代碼。

+0

謝謝,它現在可以正常工作 –