2

我知道这听起来很傻,但我一生都无法弄清楚这个 for 循环如何返回 13、11、9、7 背后的逻辑。

    for i in range(13,5,-1):
        if i % 2 != 0:
            print i

我知道第一个值是它开始的数字,第二个是它停止的地方,第三个是它所采取的步骤。“if i % 2 !=0:”是让我失望的原因。谁能解释我发生了什么?

4

3 回答 3

3

第一位是从torange(13,5,-1)倒数的。下一点是。 相当于说,或者“如果这个数字可以除以 2 没有余数”,所以你的陈述是说“ ”(这显然与“ ”相同)。 136i%2 != 0i%2 == 0if evenif oddif not even

基本上,循环打印从 13 开始的奇数并减少到 6(但 6 是偶数,所以它不会被打印)

于 2012-09-07T03:29:08.813 回答
3

% 是模运算符。从文档

%(取模)运算符产生第一个参数除以第二个参数的余数。数字参数首先转换为通用类型。零右参数引发 ZeroDivisionError 异常。参数可以是浮点数,例如,3.14%0.7 等于 0.34(因为 3.14 等于 4*0.7 + 0.34。)模运算符总是产生与第二个操作数(或零)具有相同符号的结果;结果的绝对值严格小于第二个操作数的绝对值。

于 2012-09-07T03:29:43.027 回答
2
if i % 2 !=0

该行的意思是“如果 i 除以 2 后的余数不等于 0”,因此它正在检查 i 是否为奇数。for 循环倒计时 1,但 if 语句跳过打印偶数。

于 2012-09-07T03:30:07.047 回答