Ich frage mich nur ob das eine saubere Lösung ist, oder ob man das auch gescheiter hätte machen können (ohne Stringumwandlung)
Rein technisch gibts da sicher noch mehr Lösungen, aber ich halte deine für recht sauber, da gut lesbar. Für Lesbarkeit verzichte ich persönlich gerne auf numerische Eleganz.
Wenn ich das aber ohne str() mache, bekomme ich nen Traceback, der sagt, dass currentAccNo unscriptable ist (oder sowas).. jedenfalls unzerteilbar.
Es empfiehlt sich, die echten Fehlermeldungen zu Posten. Deine dürfte
TypeError: 'int' object is unsubscriptable
gewesen sein, und sagt nicht, dass es unzerteilbar ist, sondern, dass int keinen zugriff per [] unterstützt.
Dachte, da alles Objekte wären, müsste das auch bei Integern funktionieren?
Dann hast du eine falsche Vorstellung von Objektorientierung.
"Alles sind Objekte" heist, dass alles mindestens das kann, was ein Objekt kann (also z.B. dir(x)), nicht, dass jedes Objekt all das kann, was ein anderes objekt kann.
In deinem Beispiel unterstützt ein String den Zugriff auf die einzelnen Zeichen, aus denen er besteht, per [], ein Int jedoch "besteht" nicht aus zeichen (das ist lediglich eine Darstellung), und unterstützt kein [].