Python巧克力分割if/while程序重复输出YES问题排查
重复输出的原因
- 没有设置程序终止逻辑:当
chunks == total触发首次打印YES后,代码会继续运行后续的两个while循环,如果后续循环也匹配到符合条件的切割规则,就会第二次打印YES - 双循环同时命中:当目标切块数同时满足按行切割、按列切割的判定条件时,两个while循环都会触发打印操作,直接输出两次YES
- 额外问题:你的代码中
row变量未提前定义就用于计算total,运行时会直接抛出NameError;同时按行/列切割的减量逻辑存在变量混用问题,一行的块数等于列数length,每次切走一行应该减去length而非row,按列切同理,这也会导致判断结果不符合预期。
修复方案
新增一个布尔标记位记录是否满足切割条件,所有判断逻辑走完后统一输出结果,既能避免重复打印,也可以省去无用的useless占位变量,优化后的参考代码如下:
# 提前定义巧克力的行数、列数、目标切块数 row = 2 length = 3 chunks = 3 total = row * length can_cut = False # 整块刚好符合要求 if chunks == total: can_cut = True else: # 先判断按行切割是否可行 current = 0 while current < total: current += length if current == chunks: can_cut = True break # 按行不可行再判断按列切割 if not can_cut: current = 0 while current < total: current += row if current == chunks: can_cut = True break # 统一输出结果 print("YES" if can_cut else "NO")
内容的提问来源于stack exchange,提问作者MrDDog
相关产品推荐
相关产品推荐

