Python中的取余運(yùn)算符是%。對(duì)于正數(shù),取余運(yùn)算與數(shù)學(xué)中的定義一樣。但是對(duì)于負(fù)數(shù),取余運(yùn)算的結(jié)果會(huì)稍有不同。
首先看一個(gè)例子:
>>>7 % 3 1 >>>-7 % 3 2 >>>7 % -3 -2 >>>-7 % -3 -1
可以發(fā)現(xiàn),當(dāng)被除數(shù)為負(fù)數(shù)時(shí),Python的取余運(yùn)算結(jié)果與數(shù)學(xué)中的定義不同。Python 取余運(yùn)算的結(jié)果總是與被除數(shù)的符號(hào)一致,即結(jié)果總是非正數(shù)或非負(fù)數(shù)。
這種行為的背后是Python中的一種叫做截?cái)喑ǎ═runcating division)的特殊規(guī)則,即取整時(shí)向 0 靠攏。
代碼實(shí)現(xiàn)中,取余運(yùn)算的結(jié)果等于“第一個(gè)整數(shù)等于余數(shù)(結(jié)果具有相反的符號(hào))的除法”。
舉例說明:
>>>-7 // 3 -3 >>>-7 % 3 2
上面的結(jié)果說明了當(dāng)被除數(shù)為負(fù)數(shù)時(shí),Python 取余運(yùn)算的結(jié)果是與被除數(shù)的符號(hào)一致的。
在實(shí)際應(yīng)用過程中,需要注意負(fù)數(shù)取余的特殊規(guī)則,以避免錯(cuò)誤結(jié)果的出現(xiàn)。