Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
fullcircle:34:python_ч_8 [2010/06/25 19:35] |
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]] | ||
Строка 15: | Строка 16: | ||
- [[..:36:python_ч_10|Программа на Python — часть 10]] | - [[..:36:python_ч_10|Программа на Python — часть 10]] | ||
- [[..:37:python_ч_11|Программа на Python — часть 11]] | - [[..: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 создайте следующие функции: | ||
Строка 130: | Строка 195: | ||
=====Коды ===== | =====Коды ===== | ||
- | <code>#------------------------- | + | <code>#!/usr/bin/python |
+ | #------------------------------------------------------ | ||
# Cookbook.py | # Cookbook.py | ||
# Created for Beginning Programming Using Python #8 | # Created for Beginning Programming Using Python #8 | ||
Строка 142: | Строка 208: | ||
def Menu(): | def Menu(): | ||
- | cbk = Cookbook() # Initialize the class | + | cbk = Cookbook() # Initialize the class |
Menu() | Menu() | ||
Строка 178: | Строка 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" |