简单的循环需要解释

时间:2012-09-07 03:26:49

标签: python

我知道这听起来很傻但我不能为我的生活弄清楚这个for循环如何返回13,11,9,7背后的逻辑。

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

我知道第一个值是它开头的数字,第二个值是它停止的地方,第三个值是它所采取的步骤。 “if i%2!= 0:”是什么让我失望。任何人都能解释一下我的情况吗?

3 个答案:

答案 0 :(得分:3)

第一位是range(13,5,-1),它只是从136倒数。下一位是i%2 != 0i%2 == 0相当于说if even,或者“如果这个数字可以除以2而没有余数”,那么你的判断就是“if odd”(显然与“if not even相同” {{1}}“)。

基本上,循环是从13开始打印奇数,然后减少到6(但是6是偶数,所以不打印)

答案 1 :(得分:3)

%是模运算符。来自docs

  

%(modulo)运算符从除法的除法中产生余数   第二个论点。数字参数是第一个   转换为普通类型。一个零权利的论点提出了   ZeroDivisionError异常。参数可能是浮点数   数字,例如,3.14%0.7等于0.34(因为3.14等于4 * 0.7 + 0.34。)   模运算符总是产生一个与其符号相同的结果   第二个操作数(或零);结果的绝对值是严格的   小于第二个操作数的绝对值。

答案 2 :(得分:2)

if i % 2 !=0

该行表示“如果除以i之后的余数不等于0”,那么它会检查我是否是奇数。 for循环倒数1,但if语句跳过打印偶数。