最近正看一本书《python核心编程》,自学python中,所以买了本教材看。
由于刚学,所以很多不懂。希望有人能帮助我,在这里先感谢了!!!
题目:
算术,写一个计算器程序。你的代码可以接受这样的表达式,两个操作数加一个操作符:N1 操作符 N2 。
其中N1和N2为整数,操作符可以是 + - * / % ,分别表示加法、减法、乘法、整型除、取余。计算这个表达式
的结果,然后显示出来。提示:可以使用字符串方法split(),但不可以使用内建函数eval()。
思考了很久,可能是新手吧,所以没得到答案。 再次感谢你的回复。
请教一个问题的解决方案(Python)。(已解决)
- 笨猪不飞~
- 帖子: 96
- 注册时间: 2009-09-18 18:41
- 来自: 长沙
请教一个问题的解决方案(Python)。(已解决)
上次由 笨猪不飞~ 在 2010-03-19 16:47,总共编辑 1 次。
那些我爱的人,那些迷失的风,那些永远的誓言一遍一遍,那些爱我的人,那些沉淀的泪,那些永远的誓言一遍一遍
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
Re: 请教一个问题的解决方案(Python).
代码: 全选
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
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
- 笨猪不飞~
- 帖子: 96
- 注册时间: 2009-09-18 18:41
- 来自: 长沙
- 笨猪不飞~
- 帖子: 96
- 注册时间: 2009-09-18 18:41
- 来自: 长沙
Re: 请教一个问题的解决方案(Python).
谢啦,根据你思想,我终于写出来了。
可能比你的要简单些,
可能比你的要简单些,

代码: 全选
#!/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]))
那些我爱的人,那些迷失的风,那些永远的誓言一遍一遍,那些爱我的人,那些沉淀的泪,那些永远的誓言一遍一遍