2012-03-18 82 views
1

所以對於一個任務,我需要讓python從左到右進行數學運算。數學從左到右

從這裏閱讀, http://www.sthurlow.com/python/lesson02/

它說,「還記得數學計算,從左至右,除非你把在括號中。最裏面的括號先計算。」

但無論如何強迫python實際上沒有括號從左到右做數學,並忽略操作的順序?

我的代碼是簡單地只是一個變量與用戶之後在打印輸入的數學方程

x = input("Enter numbers and operators: ") 
print x 

我需要它能夠例如做, 4 + 5 * 5 = 45

代替4 + 5 *在python 5 = 29

任何幫助理解

編輯1

userinput = raw_input("Enter numbers and operators: ") 
parts = userinput.split() 
print parts 
print eval(parts) 

我輸入1 + 1並打印結果爲['1','+','1'] < ---這是一個列表嗎? 我嘗試eval(部分)和錯誤說,必須是字符串或對象,我應該使用「eval」?

回答

6

否。分配的要點可能是您實際上必須自己編寫一些代碼,而不是讓python爲您做所有事情,並且您必須學習如何使用列表和循環。 :-)這裏有一種可能的方法:

  1. 使用input()來獲得用戶想要評估的表達式。你會得到這個作爲一個字符串,也就是一個單獨的字符序列。
  2. 將字符串拆分爲更小的字符串列表,每個字符串都是數字或運算符。所以"42 + 8 * 9"應該成爲"42", "+", "8", "*", "9"。 (有一個內置函數split()這樣做,假設在操作符和數字之間有空格。)
  3. 創建一個變量,例如: result,這將保持目前的結果,並將第一個數字放入其中。請注意,包含數字的字符串是而不是與數字相同,但可以使用int()將此類字符串轉換爲數字。
  4. 使用for循環查看列表的其餘元素。每次找到作爲操作員的元素時,請在result和列表中的後續號碼上使用該操作。

嘗試沿着這些線攻擊問題,讓我們知道如果你卡住了。

+1

我覺得他應該使用的raw_input'()'代替或他得到一個機會來改變運算符優先級規則:) – 2012-03-18 21:50:45

+1

@TimPietzcker之前Python將評估輸入3.x的'raw_input'拼寫'input' – 2012-03-18 21:53:57

+0

所以我只需要 x = raw_input(「Enter numbers and operators:」) y = x.split() 我不知道你會怎麼做第3步。有沒有辦法做到這一點沒有?喜歡使用,而 – glors 2012-03-18 21:59:58

相關問題