Python循环判断逻辑错误导致结果不符合预期问题咨询
问题原因
你的代码里判断连续元素是否相邻的逻辑写错了。当前判断条件是Statuses[firstNum + 1] - firstNum == 1,这里你把索引值当成了列表元素的值来计算,而正确的逻辑应该是比较排序后列表中相邻的两个元素的差值是否为1,也就是Statuses[firstNum + 1] - Statuses[firstNum] == 1。
第一次循环时,firstNum是0,Statuses[firstNum+1]是3,你用3减去索引0得到3,显然不等于1,所以输出了"no",这就是不符合预期的根源。
修正后的代码
def solution(Statuses): Statuses.sort() firstNum = 0 print(Statuses) for i in range(len(Statuses) - 1): # 改为比较相邻的两个列表元素的差值 if Statuses[firstNum + 1] - Statuses[firstNum] == 1: print("Yes") else: print("no") print(firstNum) firstNum += 1 solution([6, 2, 3, 8])
验证输出
运行修正后的代码,输出会和你的预期一致:
[2, 3, 6, 8] Yes 0 no 1 no 2
内容的提问来源于stack exchange,提问作者XboxOneSogie720
相关产品推荐
相关产品推荐

