Я не знаю, какой из них будет официально «предпочтительным», но лично я предпочитаю первый, так как я могу его прочитать, и сразу становится ясно, что он делает. Мне кажется, что в целом он более Pythonic. («Явное лучше, чем неявное».)
Единственное, что мне не нравится, это повторение input()
. Так что, если бы это был я, я бы написал так:
while True:
a = input()
if a=='a':
break
или это:
finished = False
while not finished:
a = input()
if a=='a':
finished = True
, хотя они менее лаконичны, чем версии на основе iter
, их легче читать, особенно если вы не используете iter()
регулярно. Они также более гибкие, так как становится легко добавлять другие «специальные» команды ввода, кроме a
, если вам в конечном итоге понадобится сделать это в будущем.