天天看點

python中的整數表達方式_python – 任何方式在sympy中進行整數除法?

标準

我假設你想要一個通過以下測試的函數div:

from sympy import sympify, simplify, Symbol

def test_div(div):

# check that div behaves as intended for integers

for i in range(-5,5):

for j in range(-5,5):

if j==0: continue

assert i//j == div(sympify(i),sympify(j))

# check that div’s output can be simplified

x = Symbol("x", integer=True)

assert simplify( div(x+1,2) - div(x-1,2) ) == 1

您可以使用模運算符實作整數除法,如下所示:

div = lambda x,y: (x-x%y)/y

由于SymPy支援模數算術并且能夠簡化它,是以該函數通過了上述測試.但是,如果不能進行完全簡化,您最終會得到可能不需要的模數表達式.

地闆

正如在評論中已經提到的,SymPy提供了一個floor函數,它可以用來擷取整數除法(這也是表達式的//運算符的實作方式):

div = lambda x,y: sympy.floor(x/y)

但是,樓層不支援簡化,是以無法進行第二次測試.