在" For Loop"之前或之前初始化值

时间:2015-06-14 05:25:19

标签: python for-loop

我不明白为什么在for循环中和之前放置 patriots_wins 的初始值会产生这样的差异。

输出为0,这是错误的

# The nfl data is loaded into the nfl variable.

for item in nfl:
    patriots_wins = 0
    if item[2] == "New England Patriots":
        patriots_wins = patriots_wins + 1

print(patriots_wins)

正确答案

# The nfl data is loaded into the nfl variable.

patriots_wins = 0
for item in nfl:
    if item[2] == "New England Patriots":
        patriots_wins = patriots_wins + 1

print(patriots_wins)

3 个答案:

答案 0 :(得分:2)

它无法正常工作的原因是每次循环执行时,都会将wins的值重置为0,因为循环体中的所有语句都会被执行。

但是如果你在循环之外声明并初始化它,那么它不会在循环中“重置”,它只是在循环的每次迭代时递增。最终结果是变量具有总胜利数。

要了解这是如何工作的,这里有一个示例脚本,可以计算列表中“a”的数量:

$(".toggle-00001").on('click', function (event){
 event.preventDefault();
    $(this).closest('tr').toggleClass("row-selected");
    $(this).closest('tr').next('tr').toggleClass("row-selected");
    $(".details-00001").slideToggle("fast");
    $(this).html(function(i,html) {
    if (html.indexOf('color-grey') != -1 ){
        html = html.replace('icon-grey','icon-green');
    } else {
        html = html.replace('icon-green','icon-grey');
    }
    return html;
 });
});

您可以看到每次>>> items = ['a','a','b','c','d','a'] >>> total_a = 0 >>> for item in items: ... count_a = 0 ... if item == 'a': ... count_a += 1 ... total_a += 1 ... print('count_a: {}'.format(count_a)) ... print('total_a: {}'.format(total_a)) ... count_a: 1 total_a: 1 count_a: 1 total_a: 2 count_a: 1 total_a: 3 如何不断增加,但total_a保持为1。

答案 1 :(得分:0)

在for的每个循环中,在整数中插入一个零,然后它将保持为零,直到循环结束。 所以:

patriots_wins = patriots_wins + 1

不管怎么样,因为在那之后

patriot_wins=0

答案 2 :(得分:0)

通过将patriots_wins = 0放在 for循环中,您将在 for循环的每次迭代开始时将值重置为0.

因此,第一种方法的值(应该是累积的patriots_wins的#)是错误的。