因此,在Python(雖然我認爲它可以適用於很多語言),我發現自己有這樣的事情經常:小的代碼冗餘(沒有感覺乾淨)
the_input = raw_input("what to print?\n")
while the_input != "quit":
print the_input
the_input = raw_input("what to print?\n")
也許我太挑剔了,但我不喜歡the_input = raw_input("what to print?\n")
必須重複的行。它降低了可維護性和組織性。但是我沒有看到避免重複代碼而沒有進一步惡化問題的任何解決方法。在某些語言中,我可以寫這樣的事:
while ((the_input=raw_input("what to print?\n")) != "quit") {
print the_input
}
這絕對是不符合Python和Python甚至不容許據我所知循環條件範圍內分配。
這有效修復代碼冗餘,
while 1:
the_input = raw_input("what to print?\n")
if the_input == "quit":
break
print the_input
但感覺並不完全正確要麼。 while 1
意味着這個循環將永遠運行;我正在使用一個循環,但給它一個假的條件,並將其放入其中。
我是不是太挑剔?有一個更好的方法嗎?也許有一些我不知道的爲此設計的語言結構?
我認爲第一種形式是完全可以接受的。 – 2010-05-31 03:52:33
這是一種常見的模式,稱爲[循環半](http://www.cs.duke.edu/~ola/patterns/plopd/loops.html#loop-and-a-half)。 – 2010-05-31 03:58:14