2017-05-07 25 views
-1

我想製作一個程序,用戶鍵入一個函數(例如「3 * x + 3」),程序將從特定的x值中獲取Y的值。如何在strthon中將str文字轉換爲int文字?

的想法是,在用戶鍵入後「3 * X + 3」時,程序替換x 3,並打印的Y值,在這種情況下爲12。

這是代碼我取得了:

K=raw_input() 
x=3 
result = int(K) 
print (result) 

當我執行程序和寫功能,將顯示錯誤:

ValueError: invalid literal for int() with base 10: '3*x+3'

當I型表達這隻發生與變量(即使他們以前定義)。我認爲「int()」僅適用於只有數字的str文字,但我需要它使用數字和變量(當然定義)。

我應該用什麼來代替int()3*x+3str更改爲int

+1

這不僅僅是將它改變爲字符串......你打算如何計劃解析x?您將需要定義算術運算符的列表,並將它們的字符串拆分爲數組。然後,您需要經過並實際執行操作,同時牢記正確的操作順序。 – kyle

+2

我假設這是你的家庭作業,這個用戶最近問了類似的東西,並以更好的方式接近解決方案。 http://stackoverflow.com/questions/43837842/efficient-algorithm-to-compose-valid-expressions-with-specific-target – kyle

回答

2

如果你不介意額外的依賴,你可以使用numexpr(第三方模塊,不完全是輕量級的,但支持很多的選擇)及其evaluate功能不正是你所需要的:

import numexpr 
x = 3 
K = "3*x+3" 
result = numexpr.evaluate(K).item() 
print(result) # 12