skyhouse 发表于 2023-2-7 16:40:26

for whlie进入重复运算的死循环,请问怎么处理

      for i in range(200,(len(nihao)-500)):
            while 条件1:
                jia = jia + nihao['数量']
                if 条件2:
                  jia = jia + nihao['数量']
                i+=1
            i+=1

假设初始的 i 的数字是200,当进入条件1后,i 的数一直在+1,但跳出whlie循环后,假设这时的 i 已经是350 。但再次进入for循环,i 不是从351开始算,而是从初始值+1,也就是201开始算。这局如何破?麻烦大神解答下。
请问如何处理?

isdkz 发表于 2023-2-7 16:45:29

这种就不要用 for 循环了,用 while 循环

skyhouse 发表于 2023-2-7 16:46:31

补充下 nihao是个dataframe

skyhouse 发表于 2023-2-7 16:48:24

isdkz 发表于 2023-2-7 16:45
这种就不要用 for 循环了,用 while 循环

遍历nihao的dataframe,中间会显出很多次条件1

歌者文明清理员 发表于 2023-2-7 16:58:42

本帖最后由 歌者文明清理员 于 2023-2-7 17:02 编辑

i=0
while i < len(nihao) - 500: #while需要手动+1,此时可以加很多1
            while 条件1:
                jia = jia + nihao['数量']
                if 条件2:
                  jia = jia + nihao['数量']
                i+=1
# 根据逻辑第二个i+=1这一行要删掉,因为while条件1结束后会多一个+1
# 如果这一行删掉之后结果出错,你再发个帖把源代码和目标都写上
同意@isdkz 说的,这种要用while循环,别for,
for只会便利原列表。

isdkz 发表于 2023-2-7 17:00:12

skyhouse 发表于 2023-2-7 16:48
遍历nihao的dataframe,中间会显出很多次条件1

虽然不知道你为什么要这样写代码,但是你的想法不就是这样吗?

      i = 200
      while True:
            while 条件1:
                jia = jia + nihao['数量']
                if 条件2:
                  jia = jia + nihao['数量']
                i+=1
            i+=1
            if i >= len(nihao)-500:
                break

skyhouse 发表于 2023-2-7 17:50:29

isdkz 发表于 2023-2-7 17:00
虽然不知道你为什么要这样写代码,但是你的想法不就是这样吗?

      i = 200


谢谢大佬,思路是您说的那种,但是写不出来。。。只能来求助
页: [1]
查看完整版本: for whlie进入重复运算的死循环,请问怎么处理