This notebook covers the basics of probability theory, with Python 3 implementations.
If you want to untangle a probability problem, all you have to do is be methodical about defining exactly what the cases are, and then careful in counting the number of favorable and total cases.