题目:请创建一个计算器类,初始化属性中有三个列表。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())