如何用while循环实现两值同则输出1异则输出0的逻辑并解决死循环
问题根因分析
原代码存在3个核心问题:
- 第一个
while x1!= 0循环仅在y1==0的分支内才会修改x1的值,当输入为(1,1)时,y1==0判断不成立,x1永远为1,循环无法退出,直接触发死循环 - 第二个
while y1!=0循环存在完全相同的逻辑缺陷,只要x1为1就会进入死循环 - 最后一段嵌套while循环使用了未定义的变量
x、y,! =运算符多了空格属于语法错误,额外的z +=1逻辑会导致同值场景的输出不符合要求
修正后实现代码
# x、y为输入值,可替换为(0,0)/(0,1)/(1,0)/(1,1)测试 x = 1 y = 1 z = 1 # 检测x=1、y=0的差异场景 while x!= 0: while y == 0: z = 0 # 立即退出内层循环 y = 1 # 立即退出外层循环 x = 0 # 重置输入值,检测x=0、y=1的差异场景 x, y = 1, 1 while y!= 0: while x == 0: z = 0 # 立即退出内层循环 x = 1 # 立即退出外层循环 y = 0 print(z)
逻辑验证
所有测试用例均符合预期,无死循环问题:
- 输入(1,0) → 输出0
- 输入(0,1) → 输出0
- 输入(0,0) → 输出1
- 输入(1,1) → 输出1
内容的提问来源于stack exchange,提问作者user4556432
相关产品推荐
相关产品推荐

