Python入门:打造专属简单计算器
在编程的世界里,Python以其简洁易懂的语法和强大的功能库,成为了初学者的首选语言。今天,我们将一起探索如何用Python编写一个简单的计算器,让你在享受编程乐趣的同时,也能掌握实用的技能。

准备工作
首先,确保你的电脑上已经安装了Python环境。如果没有安装,可以前往Python官网下载并安装最新版本。
编写代码
第一步:导入所需库
打开你喜欢的代码编辑器(如VS Code、PyCharm等),新建一个Python文件(例如calculator.py),并导入re库,用于后续的输入验证。
import re
第二步:定义计算函数
接下来,我们定义一个名为calculate的函数,用于执行基本的数学运算。
def calculate():
print("简单计算器")
print("输入 '退出' 结束程序")
while True:
user_input = input("请输入表达式(例如:2 + 3):")
if user_input.lower() == '退出':
break
if not re.match(r'^[\d\+\-\*/\s]+$', user_input):
print("输入格式错误,请重新输入!")
continue
try:
result = eval(user_input)
print(f"结果是:{result}")
except Exception as e:
print(f"计算错误:{e}")
第三步:主程序入口
最后,在文件的最下方添加以下代码,以启动计算器程序。
if __name__ == "__main__":
calculate()
运行程序
保存文件后,打开终端或命令提示符,导航到文件所在的目录,运行以下命令:
python calculator.py
此时,你应该能看到程序提示你输入表达式。试着输入一些简单的数学运算,如2 + 3,程序会输出结果5。
进阶功能
添加历史记录
为了让计算器更加实用,我们可以添加一个历史记录功能,保存用户的每一次计算。
history = []
def calculate():
print("简单计算器")
print("输入 '退出' 结束程序")
print("输入 '历史' 查看历史记录")
while True:
user_input = input("请输入表达式(例如:2 + 3):")
if user_input.lower() == '退出':
break
elif user_input.lower() == '历史':
for record in history:
print(record)
continue
if not re.match(r'^[\d\+\-\*/\s]+$', user_input):
print("输入格式错误,请重新输入!")
continue
try:
result = eval(user_input)
print(f"结果是:{result}")
history.append(f"{user_input} = {result}")
except Exception as e:
print(f"计算错误:{e}")
if __name__ == "__main__":
calculate()
安全性考虑
虽然eval函数可以方便地执行字符串表达式,但它也存在安全风险。为了避免潜在的安全问题,可以使用更安全的库如ast.literal_eval。
import ast
import operator
def safe_eval(expr):
allowed_operators = {ast.Add: operator.add, ast.Sub: operator.sub, ast.Mult: operator.mul, ast.Div: operator.truediv}
def eval_node(node):
if isinstance(node, ast.Num):
return node.n
elif isinstance(node, ast.BinOp) and type(node.op) in allowed_operators:
return allowed_operators[type(node.op)](eval_node(node.left), eval_node(node.right))
else:
raise ValueError("无效的表达式")
try:
return eval_node(ast.parse(expr, mode='eval').body)
except Exception as e:
raise ValueError(f"计算错误:{e}")
def calculate():
# 省略其他部分,仅展示修改后的try块
try:
result = safe_eval(user_input)
print(f"结果是:{result}")
history.append(f"{user_input} = {result}")
except ValueError as e:
print(e)
if __name__ == "__main__":
calculate()
通过以上步骤,你已经成功编写了一个功能简单但实用的计算器程序。这不仅是一次编程实践,更是对Python语言特性的深入理解。希望你在编程的道路上越走越远,探索更多的可能性!
« 上一篇
Python玩转CSV:数据处理新境界
下一篇 »
用Python构建简易Web服务器