Python修改数组dop时代码未进入if else分支的问题求助
问题原因排查
- 1 逻辑运算符使用错误:Python中逻辑或需使用
or而非位运算符|,位运算符优先级高于比较运算符,导致你写的indexOne != 0 | indexOne != -1判断逻辑完全不符合预期,这是if分支无法进入的核心原因。 - 2 对
str.index()方法的行为理解错误:当找不到指定子串时,index()会直接抛出ValueError,不会返回-1,所以你写的indexOne == -1的分支永远无法触发。 - 3 循环计数器
i重复累加:不管分支逻辑中是否已经对i做了自增,循环末尾又执行了一次i = i+1,会导致每次循环跳过1个元素,无法遍历完整数组。 - 4 索引取值逻辑错误:当
indexOne == 0时,你写的strObject[indexTwo]仅能取到]字符,不符合提取括号后内容的预期,应该取indexTwo + 1到末尾的子串。
修正后的代码
# 数组dop dop = ["1878[1879]","1877","[2016]2015","1874","[2871]2987","3012[2019]"] i = 0 # 捕获元素中不存在'['时抛出的ValueError while(i < len(dop)): try: strObject = dop[i] print(strObject) indexOne = strObject.index('[',0) indexTwo = strObject.index(']',0) print(indexOne) print(indexTwo) if indexOne != 0: # [不在开头,取前面的内容 substringObject = strObject[0:indexOne] dop[i] = substringObject elif indexOne == 0: # [在开头,取]后面的内容 substringObject = strObject[indexTwo+1:] dop[i] = substringObject except ValueError: # 不存在[],不修改 print("不存在[],跳过修改") finally: # 统一累加i,避免重复计数 i = i + 1 print(f"当前i值:{i}") # 输出修改后的结果 print("修改后的dop数组:", dop)
内容的提问来源于stack exchange,提问作者Osman Shams
相关产品推荐
相关产品推荐

