这是用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())
初学者用的用的基础的知识,不足之处请指正,谢谢!!(后续会更新)
继续阅读与本文标签相同的文章
下一篇 :
数据库之定义删除修改基本表
-
如何入门 MySQL
2026-05-18栏目: 教程
-
Zabbix + Cloud Alert 实践分享
2026-05-18栏目: 教程
-
阿里云容器服务通过LoadBalancer暴露IPv6服务
2026-05-18栏目: 教程
-
阿里云服务器通用网络增强型实例sn2ne 独享主机速度快 适合企业公司使用
2026-05-18栏目: 教程
-
flex布局和grid布局
2026-05-18栏目: 教程
