Python 有人能给我解释一下代码中的这个片段吗;启动+;开始%2“吗;?

Python 有人能给我解释一下代码中的这个片段吗;启动+;开始%2“吗;?,python,python-3.x,Python,Python 3.x,此代码块用于确定和打印偶数 def print_even_numbers(start, stop): for i in range(start + start % 2, stop, 2): print(i) 此start+start%2被用来代替if语句。它的作用是什么?它用于从start的“下一个偶数”开始量程 考虑基本情况(无+开始%2):步骤2的范围为开始到停止。这将打印范围内的所有偶数,前提是start本身是偶数(否则将打印所有奇数)

此代码块用于确定和打印偶数

     def print_even_numbers(start, stop):
        for i in range(start + start % 2, stop, 2):
            print(i)

start+start%2
被用来代替if语句。它的作用是什么?

它用于从
start
的“下一个偶数”开始量程

考虑基本情况(无
+开始%2
):步骤2的范围为
开始
停止
。这将打印范围内的所有偶数,前提是
start
本身是偶数(否则将打印所有奇数)

+开始%2
将除2之外的其余部分添加到
开始
,即0(当
开始
为偶数时)或1(当
开始
为奇数时),以确保范围确实从下一个偶数开始

因此,它只是一种更紧凑的形式:

def print_even_numbers(start, stop):
    # add 1 if start is odd
    if start % 2 == 1:
        start = start + 1
    for i in range(start, stop, 2):
        print(i)

start+start%2
为您提供大于或等于
start
的第一个偶数。
%
是模运算符。例如,
a%b
返回除
a/b
的剩余部分

所以如果start是偶数,
start%2=0
,因为
start
可以被
2
整除(因为它是偶数)。所以
start+start%2
就等于
start

如果start是奇数,
start%2
将是1,因此
start+start%2
将等于
start+1
。奇数加1总是偶数


因此,范围总是从偶数开始,即最接近
开始
,然后递增2,直到达到
停止
。结果是
开始
停止
之间的所有偶数

究竟什么不清楚?你自己做了什么来理解它?你的发现是什么?简单地要求为我解释这段代码并不是本文的主题。请阅读给定函数名的内容,您会认为如果
start
是偶数,那么它也应该是偶数printed@OneCricketeer是的。不,
start
input参数不打印,只打印下一个偶数number@OneCricketeer是的;)试试看。Doh:(我想它总是在添加一些东西