Пример диалога yes/no на Python, который можно использовать в скриптах.
Похожая функция на bash — есть в статье BASH: использование функций, примеры.
Пример писался на:
# python --version Python 2.7.6
Оригинал был взял из книги Г.Россум, Ф.Л.Дж.Дрейк, Д.С.Откидач — Язык программирования Python.
Код:
$ cat yesno.py
#!/usr/bin/env python
import sys
# задаём функцию выхода, первым аргументом будем передавать сообщение при выходе
def exit(exit_message):
print exit_message
sys.exit(0)
'''Собственно - функция диалога.
Первым аргументом принимаем ответ пользователя,
вторым - выдаём сообщение при неверном вводе'''
def answer(prompt, choice='Yes or no, please!'):
while True:
result = raw_input(prompt)
if result in ('y', 'Y', 'yes', 'Yes'):
print 'nAs you choice "YES" - exiting now.n'
'''тут можно использовать оператор break вместо return
так же и в ответе No'''
return False
elif result in ('n', 'N', 'no', 'No'):
print 'nAs your choice "NO" - I'll stay here...n'
a = 1
'''тут просто цикл для демонстрации
использования оператора else в циклах'''
while a < 10:
print 'I'm number ' + str(a) + ' :-)'
a = a + 1
else:
exit('nExiting.n')
else:
print(choice)
'''
используем операторы try и except, что бы корректно и красиво завершить скрипт при Ctrl+C (KeyboardInterrupt - SIGINT)
или Ctrl+D (EOFError - SIGQUIT) командах
'''
try:
answer('nAre you sure to quite? ('y' or 'n', Ctrl+C for exit) ')
except (KeyboardInterrupt, EOFError):
exit('nnExiting.n')
finally:
print 'Tha's all folks.n'
Результаты работы:
# ./yesno.py
Are you sure to quite? ('y' or 'n', Ctrl+C for exit) O
Yes or no, please!
Are you sure to quite? ('y' or 'n', Ctrl+C for exit) y
As you choice "YES" - exiting now.
Tha's all folks.
# ./yesno.py
Are you sure to quite? ('y' or 'n', Ctrl+C for exit) n
As your choice "NO" - I'll stay here...
I'm number 1 :-)
I'm number 2 :-)
I'm number 3 :-)
I'm number 4 :-)
I'm number 5 :-)
I'm number 6 :-)
I'm number 7 :-)
I'm number 8 :-)
I'm number 9 :-)
Exiting.
Tha's all folks.




