我不明白为什么在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)
答案 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的#)是错误的。