当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 请教一个问题的解决方案(Python)。(已解决)
帖子发表于 : 2010-03-18 23:49 
头像

注册: 2009-09-18 18:41
帖子: 96
地址: 长沙
送出感谢: 0 次
接收感谢: 0 次
最近正看一本书《python核心编程》,自学python中,所以买了本教材看。

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

题目:

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

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

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

思考了很久,可能是新手吧,所以没得到答案。 再次感谢你的回复。


_________________
那些我爱的人,那些迷失的风,那些永远的誓言一遍一遍,那些爱我的人,那些沉淀的泪,那些永远的誓言一遍一遍


最后由 笨猪不飞~ 编辑于 2010-03-19 16:47,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 请教一个问题的解决方案(Python).
帖子发表于 : 2010-03-19 0:43 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
代码:
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


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 请教一个问题的解决方案(Python).
帖子发表于 : 2010-03-19 12:43 
头像

注册: 2009-09-18 18:41
帖子: 96
地址: 长沙
送出感谢: 0 次
接收感谢: 0 次
thanks 研究下。 :em11


_________________
那些我爱的人,那些迷失的风,那些永远的誓言一遍一遍,那些爱我的人,那些沉淀的泪,那些永远的誓言一遍一遍


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 请教一个问题的解决方案(Python).
帖子发表于 : 2010-03-19 14:51 
头像

注册: 2009-09-18 18:41
帖子: 96
地址: 长沙
送出感谢: 0 次
接收感谢: 0 次
谢啦,根据你思想,我终于写出来了。


可能比你的要简单些, :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]))


_________________
那些我爱的人,那些迷失的风,那些永远的誓言一遍一遍,那些爱我的人,那些沉淀的泪,那些永远的誓言一遍一遍


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译