请教一个问题的解决方案(Python)。(已解决)

软件和网站开发以及相关技术探讨
回复
头像
笨猪不飞~
帖子: 96
注册时间: 2009-09-18 18:41
来自: 长沙

请教一个问题的解决方案(Python)。(已解决)

#1

帖子 笨猪不飞~ » 2010-03-18 23:49

最近正看一本书《python核心编程》,自学python中,所以买了本教材看。

由于刚学,所以很多不懂。希望有人能帮助我,在这里先感谢了!!!

题目:

算术,写一个计算器程序。你的代码可以接受这样的表达式,两个操作数加一个操作符:N1 操作符 N2 。

其中N1和N2为整数,操作符可以是 + - * / % ,分别表示加法、减法、乘法、整型除、取余。计算这个表达式

的结果,然后显示出来。提示:可以使用字符串方法split(),但不可以使用内建函数eval()。

思考了很久,可能是新手吧,所以没得到答案。 再次感谢你的回复。
上次由 笨猪不飞~ 在 2010-03-19 16:47,总共编辑 1 次。
那些我爱的人,那些迷失的风,那些永远的誓言一遍一遍,那些爱我的人,那些沉淀的泪,那些永远的誓言一遍一遍
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 请教一个问题的解决方案(Python).

#2

帖子 BigSnake.NET » 2010-03-19 0:43

代码: 全选

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
来自: 长沙

Re: 请教一个问题的解决方案(Python).

#3

帖子 笨猪不飞~ » 2010-03-19 12:43

thanks 研究下。 :em11
那些我爱的人,那些迷失的风,那些永远的誓言一遍一遍,那些爱我的人,那些沉淀的泪,那些永远的誓言一遍一遍
头像
笨猪不飞~
帖子: 96
注册时间: 2009-09-18 18:41
来自: 长沙

Re: 请教一个问题的解决方案(Python).

#4

帖子 笨猪不飞~ » 2010-03-19 14:51

谢啦,根据你思想,我终于写出来了。


可能比你的要简单些, :em06

代码: 全选

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