01.实现命令行计算器

命令行计算器(支持加减乘除)

编程基础第一期《1-30》小练习,掌握基础语法与核心概念,本期内容是实现命令行计算器,其中包含python基础知识有:

  1. 类与对象(面向对象编程)
  2. 字符串处理
  3. 流程控制
  4. 类型转换
  5. 异常处理

第一种方法

使用的是传统的遍历字符串,找出不是数字的下标(就是找出运算符),然后以序列的方式分别取出开头数、结尾数和运算符。

# 计算器

class Calculator:

    def __init__(self, expression):
        self.expression = expression
        # 方法1:遍历查找运算符位置
        operator_pos = None
        # 循环索引和字符串,组成一个元组且遍历
        for i, char in enumerate(expression):
            if not char.isdigit():
                operator_pos = i
                break

        if operator_pos is not None:
            num1 = int(expression[:operator_pos])
            operator = expression[operator_pos]
            num2 = int(expression[operator_pos + 1:])
            self.num1 = num1
            self.Operator = operator
            self.num2 = num2
        else:
            raise ValueError("表达式中未找到运算符")

    def add(self):
        return int(self.num1) + int(self.num2)

    def sub(self):
        return int(self.num1) - int(self.num2)

    def mul(self):
        return int(self.num1) * int(self.num2)

    def div(self):
        return int(self.num1) / int(self.num2)

    def result(self):
        if self.Operator == "+":
            return self.add()
        elif self.Operator == "-":
            return self.sub()
        elif self.Operator == "*":
            return self.mul()
        elif self.Operator == "/":
            return self.div()
        else:
            return "无效的运算符"


expression = input("请输入表达式:")
result = Calculator(expression)
print(result.result())

第二种方法

使用正则表达式匹配,正则表达式篇可以参考:正则表达式(知识总结篇)-优快云-笨笨轻松熊

# 计算器
import re

class Calculator:

    def __init__(self, expression):
        self.expression = expression
        pattern = r"(\d+)([+\-*/])(\d+)"
        match = re.fullmatch(pattern, expression)
        if match:
            num1 = int(match.group(1))
            operator = match.group(2)
            num2 = int(match.group(3))
            self.num1 = num1
            self.Operator = operator
            self.num2 = num2
        else:
            raise ValueError("无效的表达式格式")

    def add(self):
        return int(self.num1) + int(self.num2)

    def sub(self):
        return int(self.num1) - int(self.num2)

    def mul(self):
        return int(self.num1) * int(self.num2)

    def div(self):
        return int(self.num1) / int(self.num2)

    def result(self):
        if self.Operator == "+":
            return self.add()
        elif self.Operator == "-":
            return self.sub()
        elif self.Operator == "*":
            return self.mul()
        elif self.Operator == "/":
            return self.div()
        else:
            return "无效的运算符"


expression = input("请输入表达式:")
result = Calculator(expression)
print(result.result())
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笨笨轻松熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值