HOW-TO: Программа на Python, Часть 8 Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
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"​