python 的一段代码看不懂,求解答!

这是全部代码:defcalculator(number1,i,number2):ifi=='+':return12+number2ifi=='-':returnnumbe... 这是全部代码:
def calculator(number1,i,number2):

if i =='+' :

return 12 + number2

if i=='-':

return number1-number2

if i=='*':

return number1*number2

if i=='/':

return number1/number2

if i=='%':

return number1%number2

if i=='**':

return number1**number2

trye=['+','-','*','/','%','**']

string=raw_input('please enter the string:')

for obj in trye:

if string.find(obj)>-1 and string.count(obj)<2:

number=string.split(obj)

list=[]

for i in number:

list.apppend(i)

number1=int(list[0])

i=obj

number2=int(list[1])

print calculator(number1,i,number2)

开始是定义一个函数,但是到后面这些都看不懂了诶,好难:

高分,求细细讲解!
展开
 我来答
小米飞猫
推荐于2016-06-04 · 专注于IT监控领域技术
小米飞猫
采纳数:1653 获赞数:4811

向TA提问 私信TA
展开全部
#这是一个类似计算器的程序,上边的calculator函数你应该也能看懂。

#将一个字符串赋值给string这个变量
string=raw_input('please enter the string:')

#这是一个for循环,对trye这个列表进行迭代判断。
for obj in trye:
    #这里有两个判断条件string变量调用了find()和count()方法
    #具体方法就不详说了,自己翻书吧。
    #I.string.find(obj)>-1 使用find()查找string
    #里是否包含trye列表的运算符,find(obj)判断运算符在第几个字符位置
    #这里是 '< -1’按照字符位置来算'-1'为最后一个字符。
    #比如'1+2'这个字符串,运算符'+'号,就在第1个位置,1+2对应的字符位置
    #就是012。
    #II.count(obj)<2 用来统计这个运算符在string里出现了多少次。
    #2.string.count(obj)<2: 这个地方定义了你运算符号的个数不能大于2
    #也就是相同的运算符不能超过2个
   if string.find(obj)>-1 and string.count(obj)<2:
       #以上条件为真,将string按照运算符号分割存入number
       number=string.split(obj)
       #创建list空列表
       list=[]
       #使用for,构建一个list列表,这个地方append多写了个p
       for i in number:
           list.apppend(i)
       #list第一个元素赋值给number1,使用int()方法将字符转换成整数类型。
       number1=int(list[0])
       #运算符赋值给i
       i=obj
       #list第二个元素赋值给number2,使用int()方法将字符转换成整数类型。
       number2=int(list[1])
#打印,并调用calculator函数,函数代入三个已经定义的参数。       
print calculator(number1,i,number2)
aa1ss2_2
2015-02-02 · TA获得超过397个赞
知道小有建树答主
回答量:178
采纳率:100%
帮助的人:196万
展开全部
'''这段代码的意思是模拟简单的计算器
'''

def calculator(number1,i,number2):
   #这个函数就是定义表达式的预算,支持两个操作数,i是运算符号
   if i =='+' :
       #这里目测错了,12应该是number1吧
       return 12 + number2

   if i=='-':

       return number1-number2

   if i=='*':

       return number1*number2

   if i=='/':

       return number1/number2

   if i=='%':

       return number1%number2

   if i=='**':

       return number1**number2

       

trye=['+','-','*','/','%','**']


#输入表达式
string=raw_input('please enter the string:')

for obj in trye:
   #这里的意思是进行表达式判定,不支持套嵌,如果没有运算符号或者多个运算符号则过滤
   if string.find(obj)>-1 and string.count(obj)<2:
       #分割表达式
       number=string.split(obj)

       list=[]

       for i in number:
       
           list.append(i)
       #检查输入的是否数字
       number1=int(list[0])

       i=obj

       number2=int(list[1])

print calculator(number1,i,number2)

 


不过这代码写得实在是....我改个好一点的上来


import re

calculator = {
'+' : lambda n1 ,n2 : n1 + n2 ,\
'-' : lambda n1 ,n2 : n1 - n2 ,\
'*' : lambda n1 ,n2 : n1 * n2 ,\
'/' : lambda n1 ,n2 : n1 / n2 ,\
'%' : lambda n1 ,n2 : n1 % n2 ,\
'**' : lambda n1 ,n2 : n1 ** n2
}

data = re.match( r'(\d+)([\+\-\*\\%]|\*\*)(\d+)', raw_input('please enter the string:') )
if data:
    data = data.groups( )
    print( calculator[ data[ 1 ] ]( int( data[ 0 ] ) ,int( data[ 2 ] ) ) )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lucifer_001
2015-02-02 · TA获得超过684个赞
知道小有建树答主
回答量:414
采纳率:0%
帮助的人:414万
展开全部
前面定义了一个函数,包括加减乘除馀,这个简单
後面第一行,输入一个字符串
然後按照trye即加减乘除馀方的顺序,在字符串中搜索
如果这个运算符号在字符串中的位置是前两个的话(这个主要是保证number1是一个个位数)
就将字符串分割为两部分,存储到list中
此时list[0]为前半部分 list[1]是后半部分
然後将list[0],运算符obj,list[1] 做参数,运行calculator函数

这写的很奇怪,好像有很多问题。。。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式