Python计算器代码无报错无输出,请求排查执行异常原因
问题排查:代码陷入死循环导致无输出
你的代码核心问题是陷入死循环,永远执行不到最后的print(int_list)语句,所以控制台显示空白。
死循环的具体过程
初始list1 = ["5", "-", "2", "+", "1"],进入while len(list1) > 0循环后:
- 第一次循环:
- 因为
int_list为空,执行if分支:把"5"转整数加入int_list,list1.pop(0)后,list1变为["-", "2", "+", "1"](长度4)。 - 执行
int_list.append(0)→[5,0],再append(int(list1[1]))(list1[1]是"2")→[5,0,2]。 - 两次
pop(0)后,int_list只剩[2],但**list1的长度还是4,没有被进一步修改**。
- 因为
- 后续循环:
int_list长度为1,不满足if len(int_list) < 1的条件,跳过if分支。- 重复执行
append(0)、append(int(list1[1]))(此时list1[1]始终是"2")、两次pop(0),最终int_list回到[2],而list1的长度一直保持4,循环永远无法结束。
修复思路与代码示例
要实现计算器的功能,需要每次处理运算符时,用计算结果替换原有的操作数和运算符,同时缩短list1的长度,让循环能正常退出。修正后的代码如下:
list1 = ["5", "-", "2", "+", "1"] int_list = [] while len(list1) > 0: if len(int_list) < 1: # 初始化第一个数字 int_list.append(int(list1[0])) list1.pop(0) # 取出运算符和第二个数字 operator = list1[0] list1.pop(0) num = int(list1[0]) list1.pop(0) # 根据运算符计算结果 if operator == "-": int_list[0] = int_list[0] - num elif operator == "+": int_list[0] = int_list[0] + num print(int_list)
这段代码会依次计算5-2=3,再计算3+1=4,最终输出[4]。
内容的提问来源于stack exchange,提问作者Enes Mirza Kılıç
相关产品推荐
相关产品推荐

