我知道连续input
直到达到特定条件的两种方法。
一个是while
:
a=input()
while a!='a':
a=input()
另一个是iter
:
a=input()
for i in iter(lambda: a,'a'):
a=input()
如Nosklo所说,更好:
for i in iter(input,'a'):
pass
我只是想知道哪种更好(首选)。
答案 0 :(得分:4)
好吧,如果您要使用for
版本,至少不要lambda
使其难看:
for a in iter(input, 'a'):
....
答案 1 :(得分:2)
我不知道哪个将被正式“首选”,但是我个人更喜欢第一个,因为我可以阅读它,并且马上就可以知道它的作用。一般来说,它也更像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
之外的其他“特殊”输入命令,将变得很容易。