分页: 1 / 1
请教一个问题的解决方案(Python)。(已解决)
发表于 : 2010-03-18 23:49
由 笨猪不飞~
最近正看一本书《python核心编程》,自学python中,所以买了本教材看。
由于刚学,所以很多不懂。希望有人能帮助我,在这里先感谢了!!!
题目:
算术,写一个计算器程序。你的代码可以接受这样的表达式,两个操作数加一个操作符:N1 操作符 N2 。
其中N1和N2为整数,操作符可以是 + - * / % ,分别表示加法、减法、乘法、整型除、取余。计算这个表达式
的结果,然后显示出来。提示:可以使用字符串方法split(),但不可以使用内建函数eval()。
思考了很久,可能是新手吧,所以没得到答案。 再次感谢你的回复。
Re: 请教一个问题的解决方案(Python).
发表于 : 2010-03-19 0:43
由 BigSnake.NET
代码: 全选
In [1]: ops = {}
In [2]: ops['+'] = lambda x,y:x+y
In [3]: ops['-'] = lambda x,y:x-y
In [4]: ops['*'] = lambda x,y:x*y
In [5]: ops['/'] = lambda x,y:x*y
In [6]: ops['/'] = lambda x,y:x/y
In [7]: ops['%'] = lambda x,y:x%y
In [8]: ops
Out[8]:
{'%': <function <lambda> at 0x11f5230>,
'*': <function <lambda> at 0x11f5578>,
'+': <function <lambda> at 0x11f29b0>,
'-': <function <lambda> at 0x11f5488>,
'/': <function <lambda> at 0x11f5758>}
In [14]: my_eval = lambda s: (lambda t:ops[t[1]](int(t[0]), int(t[2])))(s.split(' '))
In [15]: my_eval ('123 * 789')
Out[15]: 97047
Re: 请教一个问题的解决方案(Python).
发表于 : 2010-03-19 12:43
由 笨猪不飞~
thanks 研究下。

Re: 请教一个问题的解决方案(Python).
发表于 : 2010-03-19 14:51
由 笨猪不飞~
谢啦,根据你思想,我终于写出来了。
可能比你的要简单些,
代码: 全选
#!/usr/bin/python
#by Jian
#2010-3-19
#it just count two numbers's sum ,subtract,ride or apart
import os
import string
str=raw_input("Please input a expressions.\n-->:")
exp=str.split(' ')
def count(s,num1,num2):
if s=='+':
return num1+num2
if s=='-':
return num1-num2
if s=='*':
return num1*num2
if s=='/':
return num1/num2
if s=='%':
return num1%num2
print count(exp[1],int(exp[0]),int(exp[2]))