我知道这听起来很傻,但我一生都无法弄清楚这个 for 循环如何返回 13、11、9、7 背后的逻辑。
for i in range(13,5,-1):
if i % 2 != 0:
print i
我知道第一个值是它开始的数字,第二个是它停止的地方,第三个是它所采取的步骤。“if i % 2 !=0:”是让我失望的原因。谁能解释我发生了什么?
我知道这听起来很傻,但我一生都无法弄清楚这个 for 循环如何返回 13、11、9、7 背后的逻辑。
for i in range(13,5,-1):
if i % 2 != 0:
print i
我知道第一个值是它开始的数字,第二个是它停止的地方,第三个是它所采取的步骤。“if i % 2 !=0:”是让我失望的原因。谁能解释我发生了什么?
第一位是从torange(13,5,-1)
倒数的。下一点是。 相当于说,或者“如果这个数字可以除以 2 没有余数”,所以你的陈述是说“ ”(这显然与“ ”相同)。 13
6
i%2 != 0
i%2 == 0
if even
if odd
if not even
基本上,循环打印从 13 开始的奇数并减少到 6(但 6 是偶数,所以它不会被打印)
% 是模运算符。从文档:
%(取模)运算符产生第一个参数除以第二个参数的余数。数字参数首先转换为通用类型。零右参数引发 ZeroDivisionError 异常。参数可以是浮点数,例如,3.14%0.7 等于 0.34(因为 3.14 等于 4*0.7 + 0.34。)模运算符总是产生与第二个操作数(或零)具有相同符号的结果;结果的绝对值严格小于第二个操作数的绝对值。
if i % 2 !=0
该行的意思是“如果 i 除以 2 后的余数不等于 0”,因此它正在检查 i 是否为奇数。for 循环倒计时 1,但 if 语句跳过打印偶数。