Yes, that’s the kind of thing I sometimes resort to now. Code can, of course, be much more complex than my bare-bones skeleton, and it’s very easy to forget to add found = True before every break. I’m unsatisfied with that approach in real life.
Why would they?
They don’t try to use a bare else: independent of a loop construct either. Or, if they do, they get a syntax error. Same thing here if they try to use if break: independent of a loop construct.