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

Различия

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

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

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