为何变量赋值后代码异常?Codewars魔法植物问题调试
问题分析与解答
核心错误:符号误用
你写的split^b是按位异或运算,不是实现幂次的**符号:- 保留
b=n时,b是初始值3,split也是3,3异或3的结果是0,p_field * 0直接返回空字符串,这就是输出为空的原因。 - 去掉
b=n后,代码里的b实际是循环修改后的n:- 初始
p_field为"o\n|\n|",n=3 - 第一次循环:
p_field被截断为"o\n|",不等于"o",n减到2 - 第二次循环:
p_field被截断为"o",触发break,此时n是2 - 3异或2的结果是1,
"o" * 1就输出单个"o"
- 初始
- 保留
循环逻辑补充
循环中当p_field变为"o"时会提前终止,此时n不会被减到0。如果要保留初始的n值用于计算,b=n的赋值是对的,但必须把异或符号^改成幂运算符号**,修正后的关键代码行应为:z = p_field * (split ** b)
内容的提问来源于stack exchange,提问作者stuck overflawed
相关产品推荐
相关产品推荐

