Здесь играют несколько вещей.
Во-первых, когда число вводится, оно преобразуется из строкового в целочисленный формат с заданной системой счисления (или, во всяком случае, это мое понимание вопроса):
number = int( user_input_str, 2 ) # user_input_str given in binary
Но после внутреннего хранения лишние цифры (для всех целей и целей) теперь исчезают.
Чтобы перебрать цифры, вам необходимо преобразовать их обратно вдвоичная строка:
number_str = '{0:b}'.format( number ).zfill( 18 )
или без начальных нулей:
number_str = '{0:b}'.format( number )
Это можно легко повторить:
for digit in number_str:
# do whatever with each digit
Если все это не получится, просто повторитечерез пользовательский ввод без промежуточных шагов преобразования.