Python入门:打造专属简单计算器

在编程的世界里,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爬虫教程PDF,Python爬虫书PDF

2026年09月02日

33阅读

外国教程python,python编程教学视频

2026年09月02日

27阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

27阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

23阅读