Character instance slowdown
The most important difference between your if and your else is this:

self.dx += self.deacc


vs.

self.dx -= self.deacc


The rest can work just fine without being in if or else.

Also, when you copy-paste code, which you apparently did to check the bounds on self.dx, you should change the comments. Both of your comments say "go below zero". It was a bit hard for me to understand the purpose of your if self.dx &gt; (self.deacc * -1):.

If I understand your code correctly, and if my Python syntax skills are correct, I think it should work to do it like this:

self.x += self.dx
self.dx += (self.deacc if self.horzDir == 'l' else -self.deacc)

if Math.abs(self.dx) &lt; self.deacc:
    self.dx = 0


If I understand your code correctly, you are stopping Mario whenever his velocity (self.dx) gets close enough to zero. This can be accomplished by taking the absolute value of self.dx (which will get rid of a possible negative sign) and check if it is below self.deacc. If it is, Mario should stop. I think describing this as "stop Mario if his speed is too slow" is more accurate than "ensure Mario's velocity doesn't go below zero."