python题目训练计算机二级python题目分值python题目怎么搜答案
下载地址 https://share.weiyun.com/OvviwGnZ
资料目录 Python练习集100题 100道Python面试题 Python100经典练习题 Python经典题目100道题 Python题库(已收录100道真题) Python100例视频讲解课程 菜鸟教程Python教程100例 130道python练习题,涵盖基础内容的方方面面 Python考试题复习知识点试卷试题 PYTHON测试题和答案 python第一阶段考试题 Python经典面试题和答案解析 python期末考试复习试卷 python习题集大全(附答案解析) 老男孩Python全栈7期练习题(面试真题模拟) 尚观python第一阶段考试(面试真题模拟) 《Python程序设计基础与应用》习题答案 《Python快速编程入门》——课后题答案 Python编程基础张健 , 张良均课后习题及答案 Python程序设计基础及实践(慕课版)郭炜习题答案 Python程序设计基础习题答案与分析 python基础试题(含答案)
举例 # 表达式中序转后序 def infix_exp_2_postfix_exp(exp): """ 中序表达式转后序表达式 """ stack = Stack() exp_lst = exp_to_lst(exp) postfix_lst = [] for item in exp_lst: # 如果是数值,直接放入到postfix_lst 中 if item.isdigit(): postfix_lst.append(item) elif item == '(': # 左括号要压栈 stack.push(item) elif item == ')': # 遇到右括号了,整个括号里的运算符都输出到postfix_lst while stack.top() != '(': postfix_lst.append(stack.pop()) # 弹出左括号 stack.pop() else: # 遇到运算符,把栈顶输出,直到栈顶的运算符优先级小于当前运算符 while stack.size() != 0 and stack.top() in ("+-*/")\ and priority_map[stack.top()] >= priority_map[item]: postfix_lst.append(stack.pop()) # 当前运算符优先级更高,压栈 stack.push(item)
# 最后栈里可能还会有运算符 while stack.size() != 0: postfix_lst.append(stack.pop())
return postfix_lst
def exp_to_lst(exp): """ 表达式预处理,转成列表形式 """ lst = [] start_index = 0 # 数值部分开始位置 end_index = 0 # 数值部分结束位置 b_start = False for index, item in enumerate(exp): # 是数字 if item.isdigit(): if not b_start: # 如果数值部分还没有开始 start_index = index # 记录数值部分开始位置 b_start = True # 标识数值部分已经开始 else: if b_start: # 如果数值部分已经开始 end_index = index # 标识数值部分结束位置 b_start = False # 标识数值部分已经结束 lst.append(exp[start_index:end_index]) # 提取数值放入列表
if item in ('+', '-', '*', '/', '(', ')'): # 运算符直接放入列表 lst.append(item)
if b_start: # 数值部分开始了,但是没有结束,说明字符串最后一位是数字, lst.append(exp[start_index:]) return lst
def cal_exp(expression): """ 计算后续表达式 """ stack = Stack() for item in expression: if item in "+-*/": # 遇到运算符就从栈里弹出两个元素进行计算 value_1 = stack.pop() value_2 = stack.pop() if item == '/': res = int(operator.truediv(int(value_2), int(value_1))) else: res = eval(value_2 + item + value_1) # 计算结果最后放回栈,参与下面的计算 stack.push(str(res)) else: stack.push(item)
res = stack.pop() return res
def test_exp_to_lst(): print exp_to_lst("1 + 2") print exp_to_lst(" 2 - 3 + 2 ") print exp_to_lst("(1+(4+5+3)-3)+(9+8)") print exp_to_lst("(1+(4+5+3)/4-3)+(6+8)*3")
def test_infix_exp_2_postfix_exp(): print cal_exp(infix_exp_2_postfix_exp("1 + 2")) print cal_exp(infix_exp_2_postfix_exp(" 2 - 3 + 2 ")) print cal_exp(infix_exp_2_postfix_exp("(1+(4+5+3)-3)+(9+8)")) print cal_exp(infix_exp_2_postfix_exp("(1+(4+5+3)/4-3)+(6+8)*3"))
if __name__ == '__main__': test_infix_exp_2_postfix_exp()
|