Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:更改';对于';环_Python_For Loop_While Loop - Fatal编程技术网

Python:更改';对于';环

Python:更改';对于';环,python,for-loop,while-loop,Python,For Loop,While Loop,我试图循环通过一组点,如果满足某些条件,在当前点和下一个点之间添加另一个点。然后我想再次开始循环,运行新旧点。 例如: 适用于范围(3)内的i 如果i不满足某一组条件,请在i之后添加一个新点。这将把范围更改为范围(4)。结束循环,用范围(4)中的i重新启动 如果我确实满足条件,请在范围(3)中继续。如果i到达末尾而不必添加新的点,则退出循环并继续代码的其余部分 我试过各种各样的方法,但都没用。我的理解是,它大致如下: b = 3 for i in range(b): if (

我试图循环通过一组点,如果满足某些条件,在当前点和下一个点之间添加另一个点。然后我想再次开始循环,运行新旧点。 例如:

  • 适用于范围(3)内的i

    • 如果
      i
      不满足某一组条件,请在
      i
      之后添加一个新点。这将把范围更改为
      范围(4)
      。结束循环,用范围(4)中的i重新启动
    • 如果我确实满足条件,请在
      范围(3)
      中继续。如果
      i
      到达末尾而不必添加新的点,则退出循环并继续代码的其余部分
我试过各种各样的方法,但都没用。我的理解是,它大致如下:

b = 3
for i in range(b):
    if (i meets conditions):
        pass
    else:
        b = b+1
        "retry entire loop with new b"
我也尝试过使用while循环,但是如果在第一个点中添加一个新点,我看不出如何在第一个点重新开始

我可能遗漏了一些简单的东西,但我就是看不到解决这个问题的方法


谢谢你的帮助

您需要为此使用递归函数:

def func(l):
   for i, el in enumerate(l):
       if (el match the conditions):
            l.insert(i+1, something)
            return func(l)
   return l


l = [1, 2, 3]
result = func(l)
或者使用while循环:

l = [1, 2, 3]
while True:
    i = 0
    if i >= len(l):
        break
    if (l[i] match the condition):
        l.insert(i+1, something)
        i = 0
    else:
        i += 1
使用while循环

has_change = True
b = 3
while has_change:
    new_b = b
    for i in range(b):   
        if (i meets conditions):
            pass
        else:
            new_b = b+1
            break
    changed = new_b != b

使用while循环触发新for循环

b = 3

criteria_met = False
while (criteria_met == False):
    for i in range(b):
        if (i == 1):
            b = b+1
            criteria_met = True
            break
print b

作为这里的旁注,在使用这样的循环时,要小心无限循环。

我认为在这种情况下,使用
while
循环会更好。你想从循环的开始重新开始,还是从刚刚添加的点开始?@kindall,我想从循环的开始开始谢谢你的回答。现在只是尝试一下;我认为
while True
语句是无限期地运行
while
循环的一种方式,直到您告诉它中断为止,这对吗?
b = 3

criteria_met = False
while (criteria_met == False):
    for i in range(b):
        if (i == 1):
            b = b+1
            criteria_met = True
            break
print b