这是用Python3编写的一个简易的计算器,只有加减乘除,没有括号。
个人思路:将公式以字符串形式传入:
1、去掉其中的空格,生成新的字符串进行操作;
2、提取其中的数字和运算符号分别生产新的列表;
3、先寻找运算符号列表里的乘除运算符,对数字对应位置的两个相邻数进行运算,再进行加减运算。
'''用函数编写计算器,要求可以计算多个值的加减乘除
多个值的加减乘除'''
def caculator():
formula00 = input('请输入公式')
formula01 = '' #去除其中的空格
for i in formula00:
if i.isspace():
pass
else:
formula01 += i
num01 = ''
num_list = [] #用来存储单独数字
symbol = [] #用来存储运算符号
count = 0 #计数器,判断是否连续出现运算符
for i in str(formula01):
if count > 1:
print('输入有误,请重新输入')
break
elif i.isdigit():
num01 += i #判断单个字符,对于连续的数字字符,将会组合在一起,即'789' 变为整数型
count = 0 #出现数字符号,计数器重置为0
elif i == '*' or i == '/' or i == '+' or i == '-':
num_list.append(int(num01))
num01 = ''
symbol.append(i)
count += 1 #出现运算符,计数器加1,连续出现,count>1,第一个if条件生效
else:
print('输入有误,请重新输入')
break
num_list.append(int(num01)) #在公式最后不会出现运算符,所以需要将最后一个存入列表
#对num_list和symbol两个列表进行处理,进行运算
while symbol:
while "*" in symbol or "/" in symbol: #先寻找*和/运算
for i in symbol:
if i == "*":
#找到运算符对应位置的symbol列表下标,对num_list里面对应位置的两个相邻数据进行运算,并用结果覆盖原数据
#同时删除symbol列表里的运算符
j = symbol.index("*")
result = num_list[j] * num_list[j+1]
del num_list[j:j+2]
num_list.insert(j,result)
symbol.remove("*")
break
if i == "/":
j = symbol.index("/")
result = num_list[j] / num_list[j + 1]
del num_list[j:j + 2]
num_list.insert(j, result)
symbol.remove("/")
break
while "+" in symbol or "-" in symbol:
for i in symbol:
if i == "+":
j = symbol.index("+")
result = num_list[j] + num_list[j+1]
del num_list[j:j + 2]
num_list.insert(j, result)
symbol.remove("+")
break
if i == "-":
j = symbol.index("-")
result = num_list[j] - num_list[j + 1]
del num_list[j:j + 2]
num_list.insert(j, result)
symbol.remove("-")
break
return num_list
print(caculator())
初学者用的用的基础的知识,不足之处请指正,谢谢!!(后续会更新)