Python->C->ASM will have a much larger chance of success than ASM->C->Python; there's a good reason why college programs don't start with assembly first.
Python->C->ASM will have a much larger chance of success than ASM->C->Python; there's a good reason why college programs don't start with assembly first.
Personally, I am a bottom up programmer. I started with C and I found it confusing and ended up really disliking programming (I was in an EE program). Then in a later term we used assembly and once I got that foundation, everything clicked. I suddenly realized why C was necessary and what it provided. High level languages were then built up from there.
Everyone is different. There won't be one path.
You could maybe do Python -> ASM -> C, but Python -> C -> ASM will probably be a waste of time because you won't actually get anything out of C until you've done ASM (and certainly not anything more than you'd have already gotten out of Python). I'm also not suggesting that he (or she) should spend months working in Assembly, but rather start with something simpler, play around with it a bit till you can do basic things like add a couple numbers and display them (things that in anything but assembly would take about 2 seconds), and get a feel for how at the most fundamental level a computer actually works. Once you understand the basics of what a computer really is, then when you move to C or Python you can actually understand what all those abstractions are doing for you. The law of leaky abstractions means sooner or later you're going to need to understand all of that anyway, and the sooner you do, the less time you waste and the firmer your understanding will be.