我知道这听起来很傻但我不能为我的生活弄清楚这个for循环如何返回13,11,9,7背后的逻辑。
for i in range(13,5,-1):
if i % 2 != 0:
print i
我知道第一个值是它开头的数字,第二个值是它停止的地方,第三个值是它所采取的步骤。 “if i%2!= 0:”是什么让我失望。任何人都能解释一下我的情况吗?
答案 0 :(得分:3)
第一位是range(13,5,-1)
,它只是从13
向6
倒数。下一位是i%2 != 0
。 i%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语句跳过打印偶数。