python之简单计算器,,作业需求及分析:im


作业需求及分析:

技术分享

技术分享
import re#问题:让用户选择1,2不现实,如何让用户自动加减乘除#思考:现在已经能够处理,单个的加减或乘除#可否在混合中先分组出(乘除) eg:  [‘8+9+‘,‘9*4/3‘,‘-‘,‘4*2‘,‘+5-2’#这样可以处理乘除,如何分组呢??   [bc] 匹配b或c# #8+9+9*4/3-4*2+5-2# num = input("please input:")# s = re.split(r‘(\d[*/]\d[*/]\d)‘, num)# print(s)# coding:utf-8# 将输入的字符串格式统一转换成列表,将数字、符号、括号都成一个独立元素,# 如: 12+3*(14+5)  ----> ["12","+","3","*","(","14","+","5",")"]def format_input(input_re_value):    input_re_value = input_re_value.replace(" ", "")  #去掉空格    print(input_re_value)    format_list = []    for i in input_re_value:        format_list.append(i)   #独立元素    snum = 0    while 1:        try:            if format_list[snum].isnumeric():       #如果列表第一个是“数字”,则返回true                if format_list[snum + 1].isnumeric():                    format_list[snum] = format_list[snum] + format_list[snum + 1]                    format_list.pop(snum + 1)                else:                    snum += 1            else:                snum += 1        except IndexError:            return format_list# 计算没有括号的列表的值。def comput(re_value):    while "*" in re_value or "/" in re_value:        for i, j in enumerate(re_value):            if j == "*":                re_cheng = float(re_value[i - 1]) * float(re_value[i + 1])                re_value.pop(i - 1)                re_value.pop(i - 1)                re_value.pop(i - 1)                re_value.insert(i - 1, re_cheng)            if j == "/":                re_chu = float(re_value[i - 1]) / float(re_value[i + 1])                re_value.pop(i - 1)                re_value.pop(i - 1)                re_value.pop(i - 1)                re_value.insert(i - 1, re_chu)    while "+" in re_value or "-" in re_value:        for i, j in enumerate(re_value):            if j == "+":                re_jia = float(re_value[i - 1]) + float(re_value[i + 1])                re_value.pop(i - 1)                re_value.pop(i - 1)                re_value.pop(i - 1)                re_value.insert(i - 1, re_jia)            if j == "-":                re_jian = float(re_value[i - 1]) - float(re_value[i + 1])                re_value.pop(i - 1)                re_value.pop(i - 1)                re_value.pop(i - 1)                re_value.insert(i - 1, re_jian)    return re_value[0]# 通过循环,先查找列表的第一个")",然后在")"位置向列表前找到第一个"("所在位置,# 并将其中的元素提取出来,生成新的列表,交给comput计算,# 返回值再插入列表当中,继续循环,直到没有"("为止def bracket_filter(list1):    while "(" in list1:        i = list1.index(")")        for m in range(i, -1, -1):   #start, stop, step            if list1[m] == "(":    #往前找,找到第一个"("                list_new = list1[(m + 1):i]                re_res = comput(list_new)                list1.insert(m, str(re_res))                for item1 in range(i + 1 - m):                    list1.pop(m + 1)                break    return comput(list1)input_sn = input("pls input:")f_re = format_input(input_sn)result = bracket_filter(f_re)print("The result is:", result)
View Code

先睡,明天再整理

python之简单计算器

相关内容

    暂无相关文章

评论关闭