// is unconditionally "flooring division", e.g:
>>> 4.0//1.5
2.0
As you see, even though both operands are floats, // still floors -- so you always know securely what it's going to do.
Single / may or may not floor depending on Python release, future imports, and even flags on which Python's run, e.g.:
$ python2.6 -Qold -c 'print 2/3'
0
$ python2.6 -Qnew -c 'print 2/3'
0.666666666667
As you see, single / may floor, or it may return a float, based on completely non-local issues, up to and including the value of the -Q flag...;-).
So, if and when you know you want flooring, always use //, which guarantees it. If and when you know you don't want flooring, slap a float() around other operand and use /. Any other combination, and you're at the mercy of version, imports, and flags!-)