我正在尝试使用jinja2在Flask中进行简单的continue内部操作for-loop
{% for num in range(0,10) %}
{% if num%2 == 0 %}
{% print num %}
{% else %}
{% continue %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
我得到这个错误
TemplateSyntaxError: Encountered unknown tag 'continue'. Jinja was looking for the following tags: 'endif'. The innermost block that needs to be closed is 'if'.
这是我遵循的jinja2文档... http://jinja.pocoo.org/docs/templates/#loop-controls
我一直试图找到一种方法,continue我for循环到以前的元素。很难解释。
请注意两个,这是一个示例:-
foo = ["a", "b", "c", "d"]
for bar in foo:
if bar == "c":
foo[foo.index(bar)] = "abc"
continue
print(bar)
Run Code Online (Sandbox Code Playgroud)
执行此操作时,当循环到达时'c',它会看到bar等于'c',它将'c'列表中的continues 替换为下一个元素,并且不会打印bar。我希望'b'在if条件为真时在替换后返回到此循环。因此它将'b'再次打印,就像循环从未达到一样'c'
背景:我正在做一个项目。如果发生任何错误,我必须从上一个元素继续解决该错误。
这是一个流程图,如果可以帮助您:
除了进行替换外,我不想修改现有列表。我尝试搜索每个不同的关键字,但没有找到相似的结果。
如何从当前元素的上一个元素继续循环?在Matlab中,我在for循环期间执行计算,但是如果满足某些条件,我试图找到在for循环期间跳过迭代的方法.我写了一个简单的例子来说明我的问题.
在下面的代码中,for循环将经历迭代1和2并按预期输出到r.r(1)将为1,并且r(2)将为2.一旦for循环运行迭代3,则将值20放入r(3).在发生这种情况之后,我希望for循环跳过接下来的5次迭代并直接进入for循环的迭代8.
for i=1:1:10
if i==3
r(i)=20;
i = i+5;
else
r(i) = i;
end
end
Run Code Online (Sandbox Code Playgroud)
r的实际结果如下:
r =
1 2 20 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
但是,我希望结果看起来类似于以下内容.(请注意,我不打算用0填充所需的r(4):r(7),而是完全跳过循环迭代4到7.)
r =
1 2 20 0 0 0 0 8 9 10
Run Code Online (Sandbox Code Playgroud)
如果有人有建议,那将非常感激.谢谢!
我正在进行一项练习,其中基于for循环的一小段代码被转换为使用while循环执行相同的操作.目的转换是错误的,如下所示:
int sum = 0;
for (int i = 0; i < 4; i++) {
if (i % 3 == 0) continue;
sum += i;
}
System.out.println(sum); // prints 3
Run Code Online (Sandbox Code Playgroud)
这转换为:
int i = 0, sum = 0;
while (i < 4) {
if (i % 3 == 0) continue;
sum += i;
i++;
}
System.out.println(sum); // will not print
Run Code Online (Sandbox Code Playgroud)
在练习中,我被要求解释为什么转换是错误的然后修复它.我的想法是:
随着初始值I = 0,这将触发继续瞬间进入将循环后,因为(0%3 == 0)将使if语句真.只要初始值为0,这将执行循环,以便跳过它无数次.我尝试更改i = 1的初始值,但是打印了noe sum.然后我尝试在执行if语句 …
我的C#Foreach循环中的continue语句有问题.
我希望它检查datagridview中是否有空白单元格,如果是,则跳过打印值并继续检查下一个单元格.
非常感谢.
这是代码:
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
if (cell.Size.IsEmpty)
{
continue;
}
MessageBox.Show(cell.Value.ToString());
}
}
Run Code Online (Sandbox Code Playgroud) while (foo() == true)
{
foreach (var x in xs)
{
if (bar(x) == true)
{
//"break;" out of this foreach
//AND "continue;" on the while loop.
}
}
//If I didn't continue, do other stuff.
}
Run Code Online (Sandbox Code Playgroud)
我有点坚持如何做到这一点.
更新:我修正了问题.我遗漏了一个事实,即如果我不在continue;while循环上调用,我需要处理其他内容.
对不起,我没有意识到我曾两次使用"某事"这个词.
while [condition]
do
for [condition]
do
if [ "$x" > 3 ];then
break
fi
done
if [ "$x" > 3 ];then
continue
fi
done
Run Code Online (Sandbox Code Playgroud)
在上面的脚本中我必须测试"$x" > 3两次。实际上,我第一次测试它时,如果这是真的,我想逃避 while 循环并继续下一个 while 循环。
有没有更简单的方法让我可以使用类似的方法continue 2来逃避外循环?
在以下两个代码片段中,根据编译或运行的速度,实际上是否有任何不同?
for (int i = 0; i < 50; i++)
{
if (i % 3 == 0)
continue;
printf("Yay");
}
Run Code Online (Sandbox Code Playgroud)
和
for (int i = 0; i < 50; i++)
{
if (i % 3 != 0)
printf("Yay");
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,在存在多于print语句的情况下,我一直在使用第一种方法来减少包含代码的缩进量.想知道一段时间,所以发现它的时间我问它是否实际上有除了视觉效果.
回复Alf(我无法让代码在评论中工作......)
对我的用法更准确的是"handleObjectMovement"函数的行,其中包括
for each object
if object position is static
continue
deal with velocity and jazz
Run Code Online (Sandbox Code Playgroud)
和....相比
for each object
if object position is not static
deal with velocity and jazz
Run Code Online (Sandbox Code Playgroud)
因此我没有使用回报.基本上"如果它与此迭代无关,请继续"
我解决了很多 Project Euler 编码问题,Python 是我的首选语言。许多程序通常需要很长时间才能完成,因此我正在努力实现一些有助于提供有关程序状态的诊断信息的东西:当发生时,KeyboardInterrupt我希望能够打印程序运行了多长时间以及一些信息帮助我弄清楚还需要多长时间。
问题是——KeyboardInterrupt当你击中时抓住Ctrl-C仍然为我退出程序......我认为这与这段代码的结构有很大关系,或者希望与Python中我还没有找到的东西有很大关系。
KeyboardInterrupt我希望我的代码在被捕获后立即在同一行恢复。
下面是此代码的示例:
try:
...
...
... #I interrupt code here and hopefully keep going!
...
...
except KeyboardInterrupt:
...
finally:
...
Run Code Online (Sandbox Code Playgroud)
我希望有人理解这样做的目的,并可以帮助我找到一种方法来做到这一点,或者解决这种从运行代码中调用中断的丑陋方法。
有相当详细的记录表明,foreach 处理速度根据 foreach 循环的执行方式而变化(从最快到最慢排序):
.ForEach() 方法continue声明,而 #1 没有
return是如何“continue使用”.ForEach()方法时。.ForEach()太大而难以满足foreach而您又需要时,正确的使用continue方法是什么?continue.ForEach({})return在方法内部使用时,您应该注意哪些含义或陷阱.ForEach()?