Python 项目实践:简单的计算器

Python 项目实践:简单的计算器

文章目录

  • [Python 项目实践:简单的计算器](#Python 项目实践:简单的计算器)
      • [一 背景](#一 背景)
      • [二 发现问题](#二 发现问题)
      • [三 分析问题](#三 分析问题)
      • [四 解决问题](#四 解决问题)
      • [五 总结](#五 总结)
      • [六 完整代码示例](#六 完整代码示例)
      • [七 源码地址](#七 源码地址)

本项目展示了如何通过 Python 实现一个简单的计算器,利用之前学习的类、循环、数据类型等知识,将常见的加减乘除功能封装成一个类。首先,我们设计了一个能够执行两个数基本运算的 Calculator 类,包括加法、减法、乘法和除法(并处理除数为零的情况)。接着,进一步扩展该类,使其能够批量处理多个数据,继承之前的功能并通过循环实现批量计算操作。本项目不仅是对 Python 基础知识的实践,也演示了如何将代码模块化、重用化。通过这个小项目,学习者可以掌握如何发现问题、分析问题,并设计代码来解决实际需求的能力。

一 背景

一起来做个小项目,把前面学到的知识用起来。预备课可以根据自己的学习情况跳过。

预备课
Python Class 类详解:定义、继承与特殊方法的使用
Python 变量与运算:基础教程
Python 数据类型详解:列表、字典、元组与集合的操作指南
Python for 和 while 循环:掌握循环控制的基本操作

二 发现问题

假如现在你手上没有计算器,需要设计一个计算器,手撸计算器。

三 分析问题

需求分析,产品定位,需要满足以下几点。

  • 计算两个数的加减乘除等一些常用方法
  • 一次性计算多次数据并给出运算结果

四 解决问题

进入程序设计阶段。

程序设计出来要批量化复制和生成,那就需要把代码封装在一起,标准化,然后批量生产出来,这个需要前面学到的知识 Python Class 类详解:定义、继承与特殊方法的使用 再结合 Python 变量与运算:基础教程 。满足第一个需求,计算两个数的加减乘除等一些常用方法,源码如下

python 复制代码
# 变量与运算的数学运算
class Calculator:
    def add(self, a, b):
        return a + b

    def subtract(self, a, b):
        return a - b

    def multiply(self, a, b):
        return a * b

    def divide(self, a, b):
        # 这里处理一个异常,除数不能为 0
        if b == 0:
            print("b cannot be 0")
        else:
            return a / b

c = Calculator()
print(c.add(1, 2))
print(c.divide(1, 2))
c.divide(1, 0)

满足第二个需求,一次性计算多次数据并给出运算结果 ,集合 Python 数据类型详解:列表、字典、元组与集合的操作指南Python for 和 while 循环:掌握循环控制的基本操作 的内容,源码如下

python 复制代码
# 批量计算:数据种类,for 和 while 循环
class Calculator01(Calculator):
    def subtract(self, a, b):
        return super().subtract(a, b)

    def batch_subtract(self, a_list, b_list):
        res_list = []
        for i in range(len(a_list)):
            res_list.append(self.subtract(a_list[i], b_list[i]))
        return res_list


c01 = Calculator01()
print(c01.subtract(2, 1))
# 批量计算 [3, 2, 1] 和 [3, 2, 1] 的差
print(c01.batch_subtract([3, 2, 1], [2, 3, 4]))

五 总结

本文并没有完成所有的计算器功能,因为本文的目标是通过一个简单的示例,来展示完整的思考流程,而不仅仅是制作一个工具。从 发现问题、分析问题、解决问题,到简化问题和代码重用,本文希望用最基本的例子贯穿整个过程。这样,即使你以后面对更复杂、更困难的挑战,也能运用这套思路,一步一步地解决问题满足需求。

六 完整代码示例

python 复制代码
# This is a sample Python script.

# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.


def print_hi(name):
    # Use a breakpoint in the code line below to debug your script.
    print(f'Hi, {name}')  # Press ⌘F8 to toggle the breakpoint.
    # 项目实践 不太实用的计算器
    # 做个小项目,把前面学到的知识用起来
    # 发现问题、分析问题、解决问题、总结复盘
    # 预备课:
    # class类
    # 变量与运算的数学运算
    # 数据种类
    # for 和 while 循环

    # 假如现在你手上没有计算器,需要设计一个计算器(发现问题)

    # 产品定位
    # 计算两个数的加减乘除等一些常用方法
    # 一次性计算一批数据的运算结果

    # 程序设计
    # 程序设计出来要批量化生成,需要把封装在一起,标准化,然后批量生产出来,这个需要前面学到的知识 class类


# 变量与运算的数学运算
class Calculator:
    def add(self, a, b):
        return a + b

    def subtract(self, a, b):
        return a - b

    def multiply(self, a, b):
        return a * b

    def divide(self, a, b):
        # 这里我们得处理一个异常
        if b == 0:
            print("b cannot be 0")
        else:
            return a / b

# 使用计算器
c = Calculator()
print(c.add(1, 2))
print(c.divide(1, 2))
c.divide(1, 0)


# 批量计算:数据种类,for 和 while 循环,和继承
class Calculator01(Calculator):
    def subtract(self, a, b):
        return super().subtract(a, b)

    def batch_subtract(self, a_list, b_list):
        res_list = []
        for i in range(len(a_list)):
            res_list.append(self.subtract(a_list[i], b_list[i]))
        return res_list


c01 = Calculator01()
print(c01.subtract(2, 1))
# 批量计算 [3, 2, 1] 和 [3, 2, 1] 的差
print(c01.batch_subtract([3, 2, 1], [2, 3, 4]))

# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    print_hi('不太实用的计算器')

# See PyCharm help at https://www.jetbrains.com/help/pycharm/

复制粘贴并覆盖到你的 main.py 中运行,运行结果如下。

nginx 复制代码
3
0.5
b cannot be 0
1
[1, -1, -3]
Hi, 不太实用的计算器

七 源码地址

代码地址:

国内看 Gitee不太实用的计算器.py

国外看 GitHub不太实用的计算器.py

引用 莫烦 Python

相关推荐
mqiqe4 分钟前
Elasticsearch 分词器
python·elasticsearch
qystca12 分钟前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法
薯条不要番茄酱12 分钟前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea
今天吃饺子17 分钟前
2024年SCI一区最新改进优化算法——四参数自适应生长优化器,MATLAB代码免费获取...
开发语言·算法·matlab
努力进修21 分钟前
“探索Java List的无限可能:从基础到高级应用“
java·开发语言·list
不去幼儿园1 小时前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习
Ajiang28247353042 小时前
对于C++中stack和queue的认识以及priority_queue的模拟实现
开发语言·c++
幽兰的天空2 小时前
Python 中的模式匹配:深入了解 match 语句
开发语言·python
Theodore_10225 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
网易独家音乐人Mike Zhou6 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot