# coding: utf-8
from collections import namedtuple
Menu = namedtuple('Menu', ['foods', 'order'])
def ask(menu):
numbers = '/'.join(str(i) for i, _ in enumerate((menu.foods)))
print('どれを食べますか ({})'.format(numbers))
num = input('>')
try:
order = menu.foods[int(num)]
except (IndexError, ValueError):
print('入力エラー')
return ask, menu
else:
return confirm, menu._replace(order=order)
def confirm(menu):
print(menu.order, 'で本当にいいですか (Y/N)')
yn = input('>')
if yn.lower() == 'y':
return finish, menu
elif yn.lower() == 'n':
return ask, menu._replace(order=None)
else:
print('入力エラー')
return confirm, menu
def finish(menu):
print(menu.order, 'を注文します')
return None, menu
def main():
foods = ['和食', '洋食', '中華']
menu = Menu(foods, None)
wait = ask
while wait is not None:
wait, menu = wait(menu)
print('完了')
if __name__ == '__main__':
main()