#写在前面:如果我们做一个函数计算器还是准备输入第一个数、运算符号、第二个数、运算符号、第三个数、运算符号。。。最后用函数写一个if判断符号,再拼接成计算式的话
#就显得繁琐,且不好(nao),另外人们生活中用计算器算计算式的时候也不是按一行行的提示一个个输入的,都是直接输入一个计算式,按等于号就直接出来结果的
#我这个程序开始的想法就是尽量往生活中用计算器的体验上靠拢,面临的问题就有:1.怎么输入计算式(字符串)后能通过赋值运算出来结果;你可能会想赋值运算时去掉字符串的引号不就行了,
#其实这个稍微想想就知道是不行的;2.然后就考虑把计算式拆成单个字符串,把数字型字符串转成数型,函数定义运算法则,通过循环遍历拆后的字符串,但是要注意有乘除运算时
#要先算乘除,而遍历是从左往右遍历,这时候就需要调整纠正
#想法不复杂,但是想到这些不容易,实践起来许多细节很头疼,这个程序只能计算没有括号的四则运算,能运算括号版的等有时间再鼓捣了
a=input('请输入计算式')
l1=[]
l1.extend(a) #将计算式分割成单个字符串
b=int(l1[0])
c=-1
d=0
def cal(i): #定义函数
global b #全局变量
global d #全局变量
if c<len(l1)-1: #第一个if避免下面l1[c+1]没有这个值而报错
if i =='+':
b=b+int(l1[c+1])
d=-int(l1[c+1]) #当下一个运算涉及乘除后纠正用值
elif i=='-':
b=b-int(l1[c+1])
d =int(l1[c+1]) #当下一个运算涉及乘除后纠正用值
elif i == '*' :
if c==1: #当第一个运算不是加减法时的情况
b=int(l1[c-1])* int(l1[c+1])
else:
b = b+d +int(l1[c-1])* int(l1[c+1])
elif i == '/':
if c == 1 : #当第一个运算不是加减法时的情况
b = int( l1[c - 1] ) / int( l1[c + 1] )
else :
b = b+d +int(l1[c-1])/ int(l1[c+1])
else: #遇到数字直接跳过
pass
else:
pass
for j in l1: #遍历计算式拆散后的每一个元素
#c = l1.index( j ) # 查询元素j的索引 #不能使用index,因为遇到重复元素就惨了
c+=1
cal(j)
print(b) #打印结果