Нет флага, который можно установить, чтобы деление Python действовало как c ++.
Вы сообщили, что не можете написать свою собственную функцию деления, но если вы передумаете, вы можете сделать это:
def cpp_int_div(dividend, divisor):
a, b = dividend, divisor
sign = 1 if (a>0 and b>0) or (a<0 and b<0) else -1
return (abs(a)/abs(b)) * sign
def cpp_int_mod(dividend, divisor): # or just use math.fmod (from Thomas K)
a, b = dividend, divisor
sign = 1 if a>0 else -1
return (abs(a)%abs(b)) * sign
Это показывает, что он действует в соответствии с вашей спецификацией:
print "11 / 3 = %d" % cpp_int_div(11,3)
print "11 %% 3 = %d" % cpp_int_mod(11,3)
print "(-11) / 3 = %d" % cpp_int_div(-11, 3)
print "(-11) %% 3 = %d" % cpp_int_mod(-11, 3)
print "11 / (-3) = %d" % cpp_int_div(11, -3)
print "11 %% (-3) = %d" % cpp_int_mod(11, -3)
print "(-11) / (-3) = %d" % cpp_int_div(-11, -3)
print "(-11) %% (-3) = %d" % cpp_int_mod(-11, -3)
Что дает:
11 / 3 = 3
11 % 3 = 2
(-11) / 3 = -3
(-11) % 3 = -2
11 / (-3) = -3
11 % (-3) = 2
(-11) / (-3) = 3
(-11) % (-3) = -2