Итак, в 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
}
Это определенно не Pythonic, и Python даже не позволяет назначать в условиях цикла AFAIK.
Этот действительный код исправляет избыточность,
while 1:
the_input = raw_input("what to print?\n")
if the_input == "quit":
break
print the_input
Но это тоже не совсем правильно. while 1
означает, что этот цикл будет работать вечно; Я использую цикл, но даю ему поддельное условие и помещая в него реальный.
Неужели я слишком придирчив? Есть лучший способ сделать это? Возможно, для этого существует некоторая языковая конструкция, о которой я не знаю?