2013-07-14 99 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

谢谢我想我会只是使用不同的输入方法 –