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)
开始是定义一个函数,但是到后面这些都看不懂了诶,好难:
高分,求细细讲解! 展开
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)
开始是定义一个函数,但是到后面这些都看不懂了诶,好难:
高分,求细细讲解! 展开
展开全部
#这是一个类似计算器的程序,上边的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)
展开全部
'''这段代码的意思是模拟简单的计算器
'''
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 ] ) ) )
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前面定义了一个函数,包括加减乘除馀,这个简单
後面第一行,输入一个字符串
然後按照trye即加减乘除馀方的顺序,在字符串中搜索
如果这个运算符号在字符串中的位置是前两个的话(这个主要是保证number1是一个个位数)
就将字符串分割为两部分,存储到list中
此时list[0]为前半部分 list[1]是后半部分
然後将list[0],运算符obj,list[1] 做参数,运行calculator函数
这写的很奇怪,好像有很多问题。。。
後面第一行,输入一个字符串
然後按照trye即加减乘除馀方的顺序,在字符串中搜索
如果这个运算符号在字符串中的位置是前两个的话(这个主要是保证number1是一个个位数)
就将字符串分割为两部分,存储到list中
此时list[0]为前半部分 list[1]是后半部分
然後将list[0],运算符obj,list[1] 做参数,运行calculator函数
这写的很奇怪,好像有很多问题。。。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询