15909574023 发表于 2020-11-18 22:03:27

求助

list1 =
b = 0
for num in list1:   
    if num == 32:
      print(b)   
    b += 1
输出:
13
list1 =
b = 0
for num in list1:
    b += 1   
    if num == 32:
      print(b)   
输出:
14
为什么?????
{:10_277:} {:10_243:} {:10_269:}

昨非 发表于 2020-11-18 22:05:48

本帖最后由 昨非 于 2020-11-18 22:11 编辑

循环中你先让b加一,b就从1开始了,
32的位置判断不就自己往后移了一位了吗

根据for循环遍历的性质,你的b应该对应了32在列表中所排的位置,

b=0时,num为列表第0个元素

而下面改了之后,
b=1时,num为列表中第0个元素,所以最后b的值就大了一

昨非 发表于 2020-11-18 22:06:34

32再列表中的位置是一样的,
b从0开始和b从1开始当然差了一位

Twilight6 发表于 2020-11-18 22:12:26



第一个是先打印,后+1,而第二个是先增1,后打印结果当然差 1 呀

这里我们知道 32 在第14个数,即索引值为 13

那么当 num = 32 时,b 应该等于 13

但是第一个代码你是先判断是否等于 32 然后在 +1

而第二个代码是先将 b +1 , 此时 b = 14 了,然后才判断是否等于 32 ,此时在继续打印,结果当然为 14


15909574023 发表于 2020-11-18 22:15:50

{:10_269:}{:10_243:}{:10_277:}{:10_257:}{:10_256:}懂了
谢谢各位

昨非 发表于 2020-11-18 22:18:49

15909574023 发表于 2020-11-18 22:15
懂了
谢谢各位

解决了记得设置最佳答案哈

15909574023 发表于 2020-11-18 22:23:57

昨非 发表于 2020-11-18 22:18
解决了记得设置最佳答案哈

ok
页: [1]
查看完整版本: 求助