Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
fullcircle:34:python_ч_8 [2010/06/22 20:36] |
fullcircle:34:python_ч_8 [2015/02/02 20:25] (текущий) |
||
|---|---|---|---|
| Строка 3: | Строка 3: | ||
| //Автор — Грэг Валтерс (Greg Walters)// | //Автор — Грэг Валтерс (Greg Walters)// | ||
| </style> | </style> | ||
| + | |||
| - [[..:27:python_ч_1|Программа на Python — часть 1]] | - [[..:27:python_ч_1|Программа на Python — часть 1]] | ||
| Строка 13: | Строка 14: | ||
| - [[..:34:python_ч_8|Программа на Python — часть 8]] | - [[..:34:python_ч_8|Программа на Python — часть 8]] | ||
| - [[..:35:python_ч_9|Программа на Python — часть 9]] | - [[..:35:python_ч_9|Программа на Python — часть 9]] | ||
| + | - [[..:36:python_ч_10|Программа на Python — часть 10]] | ||
| + | - [[..:37:python_ч_11|Программа на Python — часть 11]] | ||
| + | - [[..:38:python_ч_12|Программа на Python — часть 12]] | ||
| + | - [[..:39:python_ч_13|Программа на Python — часть 13]] | ||
| + | - [[..:40:python_ч_14|Программа на Python — часть 14]] | ||
| - | В этот раз мы продолжим работать над нашей базой рецептов, начатой в прошлом номере. Эта часть будет длинной, с большим количеством кода, поэтому запа-ситесь терпением — и вперёд.*И не пытайтесь сойти на ходу. Мы уже создали базу данных. Теперь мы хотим отображать её содержимое, добавлять и удалять его. Как это сделать? Обо всём по порядку. Мы начнём с прило-жения, запускаемого в терминале, поэтому нам нужно создать меню. Так же мы создадим класс, кото-рый будет содержать операции с нашей базой. Давайте начнём с кусочка программы, показан-ного вверху справа. | + | В этот раз мы продолжим работать над нашей базой рецептов, начатой в прошлом номере. Эта часть будет длинной, с большим количеством кода, поэтому запаситесь терпением — и вперёд. И не пытайтесь сойти на ходу. Мы уже создали базу данных. Теперь мы хотим отображать её содержимое, добавлять и удалять его. Как это сделать? Обо всём по порядку. Мы начнём с приложения, запускаемого в терминале, поэтому нам нужно создать меню. Так же мы создадим класс, который будет содержать операции с нашей базой. Давайте начнём с кусочка программы, показанного вверху справа. |
| + | <code>#!/usr/bin/python | ||
| + | #------------------------------------------------------ | ||
| + | # Cookbook.py | ||
| + | # Created for Beginning Programming Using Python #8 | ||
| + | # and Full Circle Magazine | ||
| + | #------------------------------------------------------ | ||
| + | import apsw | ||
| + | import string | ||
| + | import webbrowser | ||
| - | Теперь сделаем макет меню. Класс Cookbook пока оставим пустым. Функция Menu() будет достаточно большим циклом и будет отображать список вари-антов, которые пользователь может выполнить. Мы будем использовать цикл while. Измените код подпрограммы так, как показано внизу справа. | + | class Cookbook: |
| - | Затем мы заполним меню структурой if|elif|else, которая показана наверху следующей страницы. | + | def Menu(): |
| + | cbk = Cookbook() # Initialize the class | ||
| - | Давайте ещё раз быстро просмотрим код нашей функции. Всё начинается с отображения опций, которые пользователь может выбирать. Мы устанавли-ваем значение переменной loop равным True и затем используем цикл while, который будет про-должаться до тех пор, пока зна-чение loop не станет равным False. Также мы используем функ-цию raw_input() чтобы пользова-тель мог ввести необходимый вариант. Для того чтобы можно было протестировать наше меню, нужно немного доработать наш класс, добавив функцию __init__(): | + | Menu()</code> |
| + | |||
| + | Теперь сделаем макет меню. Класс ''Cookbook'' пока оставим пустым. Функция ''Menu()'' будет достаточно большим циклом и будет отображать список вариантов, которые пользователь может выполнить. Мы будем использовать цикл ''while''. Измените код подпрограммы так, как показано внизу справа. | ||
| + | <code>def Menu(): | ||
| + | cbk = Cookbook() # Initialize the class | ||
| + | loop = True | ||
| + | while loop == True: | ||
| + | print '===================================================' | ||
| + | print ' RECIPE DATABASE' | ||
| + | print '===================================================' | ||
| + | print ' 1 - Show All Recipes' | ||
| + | print ' 2 - Search for a recipe' | ||
| + | print ' 3 - Show a Recipe' | ||
| + | print ' 4 - Delete a recipe' | ||
| + | print ' 5 - Add a recipe' | ||
| + | print ' 6 - Print a recipe' | ||
| + | print ' 0 - Exit' | ||
| + | print '===================================================' | ||
| + | response = raw_input('Enter a selection -> ')</code> | ||
| + | |||
| + | Затем мы заполним меню структурой ''if|elif|else'', которая показана наверху следующей страницы. | ||
| + | <code> if response == '1': # Show all recipes | ||
| + | pass | ||
| + | elif response == '2': # Search for a recipe | ||
| + | pass | ||
| + | elif response == '3': # Show a single recipe | ||
| + | pass | ||
| + | elif response == '4': # Delete Recipe | ||
| + | pass | ||
| + | elif response == '5': # Add a recipe | ||
| + | pass | ||
| + | elif response == '6': # Print a recipe | ||
| + | pass | ||
| + | elif response == '0': # Exit the program | ||
| + | print 'Goodbye' | ||
| + | loop = False | ||
| + | else: | ||
| + | print 'Unrecognized command. Try again.'</code> | ||
| + | Давайте ещё раз быстро просмотрим код нашей функции. Всё начинается с отображения опций, которые пользователь может выбирать. Мы устанавливаем значение переменной ''loop'' равным ''True'' и затем используем цикл ''while'', который будет продолжаться до тех пор, пока значение ''loop'' не станет равным ''False''. Также мы используем функцию ''raw_input()'' чтобы пользователь мог ввести необходимый вариант. Для того чтобы можно было протестировать наше меню, нужно немного доработать наш класс, добавив функцию ''_init_()'': | ||
| <code>def __init__(self):pass</code> | <code>def __init__(self):pass</code> | ||
| Теперь сохраните свою программу в тот же каталог, что и базу, которую мы создали в прошлый раз, и запустите её. Вы должны увидеть что-то, похожее на текст с картинки вверху справа. | Теперь сохраните свою программу в тот же каталог, что и базу, которую мы создали в прошлый раз, и запустите её. Вы должны увидеть что-то, похожее на текст с картинки вверху справа. | ||
| + | <code>/usr/bin/python -u "/home/greg/python_examples/APSW/cookbook/cookbook_stub.py" | ||
| + | =================================================== | ||
| + | RECIPE DATABASE | ||
| + | =================================================== | ||
| + | 1 - Show All Recipes | ||
| + | 2 - Search for a recipe | ||
| + | 3 - Show a Recipe | ||
| + | 4 - Delete a recipe | ||
| + | 5 - Add a recipe | ||
| + | 6 - Print a recipe | ||
| + | 0 - Exit | ||
| + | =================================================== | ||
| + | Enter a selection -></code> | ||
| Программа должна просто печатать меню снова и снова, пока вы не введёте «0», затем напечатать «GoodBye» и завер-шить работу. Теперь мы можем начинать работать над метода-ми класса Cookbook. Их нам нуж-но несколько: метод, отобража-ющий всю информацию из базы данных, метод для поиска рецептов по базе, метод для отображения информации об определённом рецепте, исполь-зуя все три таблицы, метод, который удаляет рецепт из базы, метод, позволяющий добавлять рецепты, и метод, печатающий выбранный рецепт на принтере. Метод PrintAllRecipe не должен принимать никаких параметров кроме (self), так же как и SearchforRecipe и EnterNew. Методам PrintSingleRecipe, DeleteRecipe и PrintOut необхо-димо знать рецепт, с которым нужно работать, поэтому нам нужен параметр, который мы назовем «which». Используйте команду «pass» вместо тела ещё не написанных методов. В классе Cookbook создайте следующие функции: | Программа должна просто печатать меню снова и снова, пока вы не введёте «0», затем напечатать «GoodBye» и завер-шить работу. Теперь мы можем начинать работать над метода-ми класса Cookbook. Их нам нуж-но несколько: метод, отобража-ющий всю информацию из базы данных, метод для поиска рецептов по базе, метод для отображения информации об определённом рецепте, исполь-зуя все три таблицы, метод, который удаляет рецепт из базы, метод, позволяющий добавлять рецепты, и метод, печатающий выбранный рецепт на принтере. Метод PrintAllRecipe не должен принимать никаких параметров кроме (self), так же как и SearchforRecipe и EnterNew. Методам PrintSingleRecipe, DeleteRecipe и PrintOut необхо-димо знать рецепт, с которым нужно работать, поэтому нам нужен параметр, который мы назовем «which». Используйте команду «pass» вместо тела ещё не написанных методов. В классе Cookbook создайте следующие функции: | ||
| Строка 128: | Строка 195: | ||
| =====Коды ===== | =====Коды ===== | ||
| - | <code>#------------------------- | + | <code>#!/usr/bin/python |
| + | #------------------------------------------------------ | ||
| # Cookbook.py | # Cookbook.py | ||
| # Created for Beginning Programming Using Python #8 | # Created for Beginning Programming Using Python #8 | ||
| Строка 140: | Строка 208: | ||
| def Menu(): | def Menu(): | ||
| - | cbk = Cookbook() # Initialize the class | + | cbk = Cookbook() # Initialize the class |
| Menu() | Menu() | ||
| Строка 176: | Строка 244: | ||
| loop = False | loop = False | ||
| else: | else: | ||
| - | print 'Unrecognized command. Try again.' | + | print 'Unrecognized command. Try again.' |
| | | ||
| /usr/bin/python -u "/home/greg/python_examples/APSW/cookbook/cookbook_stub.py" | /usr/bin/python -u "/home/greg/python_examples/APSW/cookbook/cookbook_stub.py" | ||