Я довольно новыми для Python, я просто интересно, что лучший способ сделать это (очень простой вопрос):Python вызов функции снова, если неправильный ввод
У меня есть функция, которая предлагает пользователю выбрать опцию , если опция они Указан недопустимый он будет вызывать функцию снова:
def choose_colour():
print "Select colour:"
print "1. Red"
print "2. Blue"
print "3. Green"
selection = raw_input()
Изначально я был, если заявление, сравнивающий входной и если это был неправильный вход я бы вызвать функцию снова внутри себя. Что непрактично и неправильно.
def choose_colour():
print "Select colour:"
print "1. Red"
print "2. Blue"
print "3. Green"
selection = raw_input()
if selection == "1":
colour = "Red"
elif selection == "2":
colour = "Blue"
elif selection == "3":
colour = "Green"
else:
print "Please select, 1, 2 or 3"
choose_colour()
Edit:
Это работает, но я предпочитаю решение цикла.
def set_TPL_colour():
print "Enter TPL colour value:"
print "1. WHITE"
print "2. GREEN"
print "3. AMBER"
print "4. RED"
print ">>>",
option = raw_input()
if option == "1":
tpl_colour = "WHITE"
return tpl_colour
elif option == "2":
tpl_colour = "GREEN"
return tpl_colour
elif option == "3":
tpl_colour = "AMBER"
return tpl_colour
elif option == "4":
tpl_colour = "RED"
return tpl_colour
else:
print "ERROR incorrect option selection"
tpl_colour = set_TPL_colour()
return tpl_colour
Это не обязательно * непрактично и неправильно. * Если 'select_colour' должен вернуть выбранный цвет, просто используйте' return ...' вместо 'color = ...', а затем в конце измените его как 'return select_colour()' – JCOC611
Эта функция выходит без печати ничего, если выбор находится в '['1', '2', '3']' – ozgur