Python类与面向对象练习题:依次输入数字和运算符计算结果

题目:请创建一个计算器类,初始化属性中有三个列表。input_num_list存放用户输入的数字、inoput_ys_list存放用户输入的运算符,eval_list存放依次从前两个列表中抽取的元素,用于后续计算。

方法要求:该类拥有三个方法。num_method提示用户输入数字,输入格式错误会做出提示。ys_method方法提示用户输入运算符,并判断是否符合格式要求。eval_method会按照用户输入的数字和运算符进行计算,当判断运算符为‘=’时,列出运算公式和结果。

# 创建一个存取数字的列表
# 创建一个存取运算符的列表
# 创建一个用于eval计算的列表
class Calculator:
    def __init__(self):
        self.input_num_list = []
        self.input_ys_list = []
        self.eval_list = []

    def num_method(self):
        while True:
            input_num = input('请输入数字:')
            try:
                if int(input_num):
                    self.input_num_list.append(input_num)
                    break
            except:
                print('请确认输入的是数字格式')

    def ys_method(self):
            ys_check = ['+', '-', '*', '/', '**', '//', '=', '%']
            while True:
                input_ys = input('请输入运算符:')
                if input_ys in ys_check:
                    break
                else:
                    print('输入的运算符错误,请重新输入')
            self.input_ys_list.append(input_ys)

    def eval_method(self):
        while True:
            self.num_method()
            self.ys_method()
            a = self.input_num_list[0]
            b = self.input_ys_list[0]
            self.eval_list.append(a)
            self.eval_list.append(b)
            self.input_num_list.remove(a)
            self.input_ys_list.remove(b)
            # 判断最后输入的为等号时,结束循环
            if b == '=':
                self.eval_list.pop()
                break
        str_eval = ''.join(self.eval_list)
        result = eval(str_eval)
        print('运算公式为:', str_eval, '=')
        return result


if __name__ == '__main__':
    test = Calculator()
    print('结果为:', test.eval_method())

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值