2013-07-14 131 views
1

所以我在Python中製作了一個快速計算器腳本,並且我需要分解一個簡短的字符串。該程序首先顯示一條簡短的歡迎消息,然後提示詢問他們想要計算的內容,並向他們顯示正確的格式。功能在那裏做計算,但不幸的是,我不能讓字符串解剖位工作。在Python中拆分字符串

這裏是我的代碼

print ("--------------------------------------") 
print (" ") 

print ("Advanced Quick Calculator") 
print ("By Max M, licenced under GPLv3") 

print (" ") 
print ("--------------------------------------") 

statement = raw_input ("Please enter your mathematical statement [3 3 plus minus times   divide]: ") 

strnum1 = statement[:1] 
print ("strnum1 : " + strnum1) 
#num1 = int (strnum1) 

strnum2 = statement[:4] 
print ("strnum2 : " + strnum2) 
#num2 = int (strnum2) 

operation = statement[5:11] 
print ("operation : " + operation) 
#if operation == "+": 
#  ans = num1 + num2 

#if operation == "-": 
# ans = num1 - num2 

#if operation == "*": 
# ans = num1 * num2 

#if operation == "/": 
# ans = num1/num2 

#print ("The answer is : "), ans 
+1

也許你應該考慮實際解析字符串,而不是使用固定的偏移量。 –

+0

請澄清正確的格式應該是什麼。是3 + 3,3 - 3,3/3等? –

+0

我會先用空格分割字符串 – tangrs

回答

1

這看起來像正則表達式工作:

>>> import re 
>>> match = re.search(r'(\d+)\s*([+*/-])\s*(\d+)', '42 + 7') 
>>> match.group(1) # <-- num1 
'42' 
>>> match.group(2) # <-- operation 
'+' 
>>> match.group(3) # <-- num2 
'7' 

切片輸入就像你正在做的可能不是一個好主意,因爲它極大地限制了允許的格式。例如,如果用戶意外地在他的輸入之前添加了幾個空格,會發生什麼?正則表達式可以很好地處理這種情況

+0

你得到了除法運算符,並且不需要在字符類中轉義元字符。 – user2357112

+0

@ user2357112採取點,謝謝。 – arshajii

+0

謝謝我想我會只是使用不同的輸入方法 –