The things that make C++ unforgiving is not the things that blow up at compile time. Those are trivial to deal with, comparatively, since you have the error right there. It's the things that compile, but then blow up in weird, and often unpredictable ways that make C++ unforgiving. Or to put it another way, it's the lack of undefined behavior in most situations that makes Python more forgiving.
Yes, Python may still blow up at runtime if you don't get it exactly right, but it'll blow up in very predictable ways: Off by one errors accessing arrays doesn't work some of the time, maybe, except on Tuesdays, instead you always get an IndexError. And some cases, like overflows/underflows, doesn't even blow up, instead you just get bigger/smaller numbers.
Type-hints also does a lot (but still not enough, IMO) to reduce the amount of blowing at runtime up that you might experience when working in Python. Though that obviously wont help with poorly written code, which is unlikely to have proper type hints