A segunda solução funciona, desde que você garanta que sempre está trabalhando com inteiros. Uma boneada e aparecer algum float na operação, memso sem você perceber, aí começa dar errado.
Pode usar, tem quem usa, mas é preciso extremo cuidado. Na verdade tenho medo que em alguns casos funcionem. Isso parece algum tratamento especial do Python, mas que você não sabe se vai funcionar ou não. É quase como andar sobre ovos.
Veja acontecendo em algo simples: https://ideone.com/sHrSVt
Obrigado pelo artigo, é sempre importante destacar essas coisas, porque sem aprender de forma estruturada essas coisas passam batido pela maioria das pessoas. E em muito lugar, até mesmo de experientes, você vê o erro sendo cometido.
Pode ajudar: Existe diferença entre “exatidão” e “precisão” em contextos de computação?.
Farei algo que muitos pedem para aprender programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).