Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
fullcircle:29:python_ч_3 [2010/10/07 22:03] |
fullcircle:29:python_ч_3 [2015/12/03 19:31] (текущий) |
||
|---|---|---|---|
| Строка 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]] | ||
| Строка 34: | Строка 38: | ||
| Давайте разберём код по строкам. Первые четыре строки — это комментарии, о которых мы говорили в прошлый раз. Пятая строка говорит Python, что нужно использовать модуль «random». Мы должны явно указать Python на это. | Давайте разберём код по строкам. Первые четыре строки — это комментарии, о которых мы говорили в прошлый раз. Пятая строка говорит Python, что нужно использовать модуль «random». Мы должны явно указать Python на это. | ||
| - | В седьмой строке находится цикл «for», который печатает 14 случайных чисел. В строке восемь вызывается функция randint(), которая отображает случайное целое число в диапазоне от 1 до 10. Обратите внимание, что мы должны указать из какого модуля эта функция. В этом случае мы вызываем её random.randint. Зачем вообще создавать модули? Если бы все возможные функции включались непосредственно в Python, Python был бы очень большим и медленным, к тому же отладка стала бы кошмаром. Используя модули, мы можем разбить код на группы, специфичные для определённых потребностей. Если, например, вам не нужно использовать функциональность баз данных, то вам и не нужно знать, что здесь есть модуль для SQLite. Однако, когда он вам понадобится, вы его легко найдёте. Мы ещё будем использовать модули баз данных в последующих статьях. | + | В седьмой строке находится цикл «for», который является счетчиком и последовательно проходит числа от 1 до 14. В строке восемь вызывается функция randint(), которая отображает случайное целое число в диапазоне от 1 до 10. Обратите внимание, что мы должны указать из какого модуля эта функция. В этом случае мы вызываем её random.randint. Зачем вообще создавать модули? Если бы все возможные функции включались непосредственно в Python, Python был бы очень большим и медленным, к тому же отладка стала бы кошмаром. Используя модули, мы можем разбить код на группы, специфичные для определённых потребностей. Если, например, вам не нужно использовать функциональность баз данных, то вам и не нужно знать, что здесь есть модуль для SQLite. Однако, когда он вам понадобится, вы его легко найдёте. Мы ещё будем использовать модули баз данных в последующих статьях. |
| Начав работать с Python, возможно, вы создадите свои собственные модули, чтобы использовать уже написанный код снова и снова, без необходимости повторного набора. Если вам нужно поменять что-то в этом коде, вы сможете сделать это с минимальным риском для кода в основной программе. Правда, на это есть ограничения, и мы разберёмся с этим позже. Когда мы использовали команду «import random», мы получили доступ ко всем функциям в модуле random. Если же нам нужна только функция randint(), можно привести оператор импорта к такому виду: | Начав работать с Python, возможно, вы создадите свои собственные модули, чтобы использовать уже написанный код снова и снова, без необходимости повторного набора. Если вам нужно поменять что-то в этом коде, вы сможете сделать это с минимальным риском для кода в основной программе. Правда, на это есть ограничения, и мы разберёмся с этим позже. Когда мы использовали команду «import random», мы получили доступ ко всем функциям в модуле random. Если же нам нужна только функция randint(), можно привести оператор импорта к такому виду: | ||
| Строка 114: | Строка 118: | ||
| Теперь вы можете видеть, где комментарии пригодятся. Помните, мы возвращаем сгенерированные строки, поэтому мы должны иметь что-то для получения обратно, когда мы делаем к ней вызов. Вместо назначения его на другую строку, мы просто выводим его на экран. Вот строка вызова. | Теперь вы можете видеть, где комментарии пригодятся. Помните, мы возвращаем сгенерированные строки, поэтому мы должны иметь что-то для получения обратно, когда мы делаем к ней вызов. Вместо назначения его на другую строку, мы просто выводим его на экран. Вот строка вызова. | ||
| - | print TopOrBottom('=',40) | + | <code>print TopOrBottom('=',40)</code> |
| Так что теперь, мы не только позаботились о тех трёх линиях, мы сократили количество процедур, что нам нужно от 3 до 2. Таким образом, нам нужно распечатать только центральную часть. | Так что теперь, мы не только позаботились о тех трёх линиях, мы сократили количество процедур, что нам нужно от 3 до 2. Таким образом, нам нужно распечатать только центральную часть. | ||
| - | Давайте вызовим новую функцию 'Fmt'. Передадим ей 4 значения параметра: | + | Давайте вызовем новую функцию 'Fmt'. Передадим ей 4 значения параметра: |
| val1– имя покупки для вывода налево | val1– имя покупки для вывода налево | ||
| leftbit – длина левого "столбца" | leftbit – длина левого "столбца" | ||
| Строка 125: | Строка 129: | ||
| rightbit – длина правого "столбца". | rightbit – длина правого "столбца". | ||
| - | Первая задача заключается в форматировании информация для правой стороны. Поскольку мы хотим, чтобы отображалось долларах и центах, мы можем использовать специальную функцию замены переменной, которая гласит: печать значения как число с плавающей точкой с n числом располагается справа от десятичной точки. Команда будет '%2.f'. Мы назначим это к переменной, названной 'part2'. Таким образом наша строка кода будет 'part2 = '%.2f' % val2'. Мы также можем использовать набор функций, встроенных в строки Python, называющиеся ljust и rjust. Ljust будет отправлять строки влево, делая отступы справа с любого символа, которого Вы хотите. Rjust делает то же самое, кроме того, что отступает на левую сторону. Теперь давайте немного уберём мусор. Используя замены мы бросаем вместе большые строки и возвращаем его в код вызова. Вот наша следующая строка. | + | Первая задача заключается в форматировании информация для правой стороны. Поскольку мы хотим, чтобы отображалось долларах и центах, мы можем использовать специальную функцию замены переменной, которая гласит: печать значения как число с плавающей точкой с n-ным числом знаков после десятичной точки. Команда будет '%2.f'. Мы назначим это к переменной, названной 'part2'. Таким образом наша строка кода будет 'part2 = '%.2f' % val2'. Мы также можем использовать набор функций, встроенных в строки Python, называющиеся ljust и rjust. Ljust будет отправлять строки влево, делая отступы справа с любого символа, которого Вы хотите. Rjust делает то же самое, кроме того, что отступает на левую сторону. Теперь давайте немного уберём мусор. Используя замены мы бросаем вместе большые строки и возвращаем его в код вызова. Вот наша следующая строка. |
| - | return '%s%s%s%s' % ('| ',val1.ljust(leftbit-2,' '),part2.rjust(rightbit-2,' '),' |') | + | <code>return '%s%s%s%s' % ('| ',val1.ljust(leftbit-2,' '),part2.rjust(rightbit-2,' '),' |')</code> |
| Хотя это выглядит довольно сложно на первый взгляд, давайте проанализируем код: | Хотя это выглядит довольно сложно на первый взгляд, давайте проанализируем код: | ||
| Строка 153: | Строка 157: | ||
| И снова, мы можем назначить возвращённое значение другой строке, но можем и просто вывести его на печать. Напоминаю, что мы указываем ширину слева — 30, а справа — 10. Сумма равна 40. Это число мы и передали в функцию «TopOrBottom» раньше. Теперь запустите ваш редактор и введите код, который расположен ниже. | И снова, мы можем назначить возвращённое значение другой строке, но можем и просто вывести его на печать. Напоминаю, что мы указываем ширину слева — 30, а справа — 10. Сумма равна 40. Это число мы и передали в функцию «TopOrBottom» раньше. Теперь запустите ваш редактор и введите код, который расположен ниже. | ||
| + | |||
| + | <code> | ||
| + | #pprint1.py | ||
| + | #Example of semi-useful functions | ||
| + | def TopOrBottom(character,width): | ||
| + | # width is total width of returned line | ||
| + | return '%s%s%s' % ('+',(character * (width-2)),'+') | ||
| + | def Fmt(val1,leftbit,val2,rightbit): | ||
| + | # prints two values padded with spaces | ||
| + | # val1 is thing to print on left, val2 is thing to print on right | ||
| + | # leftbit is width of left portion, rightbit is width of right portion | ||
| + | part2 = '%.2f' % val2 | ||
| + | return '%s%s%s%s' % ('| ',val1.ljust(leftbit-2,' '),part2.rjust(rightbit-2,' '),' |') | ||
| + | # Define the prices of each item | ||
| + | item1 = 3.00 | ||
| + | item2 = 15.00 | ||
| + | # Now print everything out... | ||
| + | print TopOrBottom('=',40) | ||
| + | print Fmt('Item 1',30,item1,10) | ||
| + | print Fmt('Item 2',30,item2,10) | ||
| + | print TopOrBottom('-',40) | ||
| + | print Fmt('Total',30,item1+item2,10) | ||
| + | print TopOrBottom('=',40) | ||
| + | </code> | ||
| Сохраните код в файл «pprint1.py» и запустите его. Должно получиться что-то похожее на текст справа ниже. | Сохраните код в файл «pprint1.py» и запустите его. Должно получиться что-то похожее на текст справа ниже. | ||
| Строка 200: | Строка 228: | ||
| +====================================+</code> | +====================================+</code> | ||
| - | Если вы хотите ещё усложнить программу, можете добaвить строку с налогом. Выво-дить её нужно примерно так же, как и итоговую сумму, но вместо цены поставить '(total * .086)'. | + | Если вы хотите ещё усложнить программу, можете добaвить строку с налогом. Выводить её нужно примерно так же, как и итоговую сумму, но вместо цены поставить '(total * .086)'. |
| <code>print Fmt('Tax:',30,total*.086,10)</code> | <code>print Fmt('Tax:',30,total*.086,10)</code> | ||