擅长:python、mysql、java
<p>在代码2中,您正在修改现有列表,然后根据%操作检查修改后的值</p>
<p>例如,对于值45,列表是,[45,1,2,3],比如说,现在对于条件1,即如果值%3为真
所以<code>numberB[i]%3==0</code>即<code>45%3==0</code>是真的,所以您将其修改为“fizz”</p>
<p><code>numverB[0]='buzz'</code>现在列表变成['fizz',1,2,3..]
现在您正在测试下一个条件,即%by 5,因此'buzz'%5'给出了错误,因为mod操作在str上不起作用</p>
<p>简单来说,代码1使用一个临时数据值,该值保存在列表中的索引值,并测试该变量的条件,然后修改列表值</p>
<p>在代码2中,您直接检查列表中的索引值,并基于条件满足,修改内部列表值,因此,由于值除以3和5,值首先在除以3时修改为“buzz”,然后在测试该索引处的值时(现在变为“buzz”而不是int值)所以不能将字符串除以整数。所以你得到了错误</p>
<pre><code>numbersB = [45, 22, 25, 73, 10, 33]
for i in range(len(numbersB)):
print('value at index {} is {} before any operation'.format(i,numberB[i]))
if numbersB[i] % 3 == 0:
numbersB[i] = "buzz"
print('value at index {} is {} after dividing by 3 operation'.format(i,numberB[i]))
if numbersB[i] % 5 == 0:
numbersB[i] = "fizz"
print('value at index {} is {} after dividing by 5 operation'.format(i,numberB[i]))
print(numbersB)
</code></pre>
<p>运行上面的代码,您可以看到code2中的值是如何变化的</p>