为何将while循环中i += 1改为i += 2可实现身高200+球员筛选?
为什么把
i += 1改成i += 2后while循环就正常了? 嘿,这个问题我太熟悉了!我来帮你捋清楚背后的原因~
大概率是你的球员数据结构是交替存储的——比如一个列表里,先是球员名字,紧跟着是他的身高,再下一个名字、再身高,类似这样:
players = ["张三", 198, "李四", 205, "王五", 195, "赵六", 210]
为啥i += 1不行?
假设你最初的循环大概是这样写的:
i = 0 while i < len(players): # 这里如果i是偶数,取到的是球员名字(字符串),和数字200比较会报错 if players[i] > 200: print("身高超200的球员:", players[i]) i += 1
当i是偶数时,你取到的是字符串类型的名字,和整数200比较要么直接抛出类型错误,要么逻辑完全跑偏(毕竟你要筛选的是身高),代码自然没法正常工作。
改成i += 2为啥就对了?
调整后,你相当于让循环每次跳过一个非目标字段,精准定位到每个球员的身高值:
i = 1 # 从第一个身高的索引开始 while i < len(players): if players[i] > 200: print("身高超200的球员:", players[i-1], players[i]) i += 2 # 每次跳两步,直接到下一个球员的身高
这样循环每次都只检查身高数值,逻辑完全匹配你的需求,代码自然就正常运行了。
简单说就是:你的数据是“每两个元素对应一个球员”的结构,i += 1会遍历所有元素(包括名字),而i += 2能让你只遍历身高字段,刚好命中你的筛选逻辑~
内容的提问来源于stack exchange,提问作者徐浩瑞
相关产品推荐
相关产品推荐

