пятница, 24 августа 2012 г.

Python Примеры программ

Запуск Python из консоли командной строки и выход из него.


1. Пуск > Все программы > Стандартные > Командная строка
2. Далее в "черном квадрате" командной строки набираете:

сd C:\Python27\

и нажимаете Enter. 

Это команда смены директории. В результате вы попадете в папку Python27, в которую был установлен ваш Python. Если при установке вы ничего не меняли, то в таком случае Python был установлен на диск С.

Python27 это версия программы. Цифры могут быть разные в зависимости от вашей версии.

3. Далее вводите в командную строку

python

и нажимаете Enter. В результате Python начнет работать.

4. Для того, чтобы выйти из Python, находясь в консоли нажмите Ctrl + Z и затем нажмите Enter.

Запуск из консоли программы, написанной на языке Python и хранящейся в отдельном файле на жестком диске.


Из консоли вы можете запустить программу, написанную на языке Python, код которой хранится в отдельном файле на жестком диске. (Python при этом запускать не надо.) Для этого в консоли наберите команду

cd C:\Путь до папки с вашим файлом\

и нажмите Enter.

В результате вы перейдете в папку, в которой хранится ваш файл с программой.

Наберите в консоли название вашего файла, например

my_programm.py
(или python my_programm.py)

и нажмите Enter.

В результате, код программы из файла будет выполнен и ваша программа запустится из консоли.

Так же вы можете запустить вашу программу, написанную на языке Python, перетаскиванием иконки файла с кодом программы в окно консоли командной строки. При этом в командной строке автоматически появится путь до файла. После этого нажмите Enter и ваша программа запустится. Python при этом запускать не надо.

Команды Python.


Для отделения команд друг от друга в Python используются обязательные переходы на следующую строку и отступы перед командами в виде 4-х пробелов.

# Комментарии

# - это однострочный комментарий.
# Многострочных комментариев в Python нет.
# Для многострочных комментариев каждую строку
# необходимо начинать с символа #.

# Ниже расположен код, который обеспечивает правильную обработку
# русских букв в коде вашей программы.
# Без этого кода возникнет ошибка и программа не запустится.
# Данный код должен размещаться в самом начале вашего файла с программой.

# -*- coding: utf-8 -*-

# Математические символы

+   # это символ сложения
-    # это символ вычитания
*    # это символ умножения
/     # это символ деления
%   # это символ получения остатка от деления

# Символы сравнения 

<    # это символ меньше чем
>    # это символ больше чем
<=  # это символ меньше чем или равно этому
>=  # это символ больше чем или равно этому
==  # это символ равно
!=   # это символ неравно

# Булевы значения 

True
False

#Логические значения

and # это символ логического и
or   # это символ логического или
not # это символ логического не

# Создание переменных и действия над ними.

cars = 100.0
drivers = 30.0
cars_without_drivers = cars - drivers
car_color = "Красный"
boat_color = "Синий"
what_color = "Какой цвет у машины? %r"
water = True
gas = False 

# Вывод текста на экран.

print "Данный текст будет выведен на экран."
print 'В коде программы можно использовать как двойные, так и одинарные кавычки.'
print gas
print "Результат вычисления равен: ", (100 - 50 + 10) / 60 * 30
print "Два меньше, чем пять? ", 2 < 5
print "Сегодня останется только", cars_without_drivers , "машин без водителей."
print "Количество машин в автопарке равно %d." % cars
print "У всех машин цвет %s." % car_color
print "У нас %d автомобилей и %d водителей." % (cars, drivers)
print "Всех вместе у нас %d штук. " % (cars + drivers)
print "Для округления чисел с плавающей точкой используйте функцию round(). В результате вы получите %r." % round(1.7333)
print "Сегодня утром пошел белый  %s" % 'снег.'
print  what_color % car_color
print car_color + boat_color
print "Папа " + "и " + "мама."
print "." * 10 # выведет на экран 10 точек
print "Команды можно записывать в строчкку";print "Отделяя их точкой с запятой.";print "Как и в других языках программирования."

# Специальные символы %d, %s и %r отвечают за подстановку
# соответствующих значений переменных в текст.
# %d - подставляет числа.
# %s - подставляет текстовые строки.
# %r - выводит все данные без разбора.

formatter = "%r %r %r %r"
print formatter % (1, 2, 3,4 )
print formatter % ("one", "two", "three", "four")
print formatter % (True, False, False, True)
print formatter % (formatter, formatter, formatter, formatter)
print formatter % (
    "I had this thing.",
    "That you could type up right.",
    "But it didn't sing.",
    "So I said goodnight."
)

months = "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
print "Следующий текст будет разбит на строки: ", months

print """
С помощью трех двойных (или трех одинарных) кавычек
можно выводить
на экран текст
в подобном
отформатированном
виде.
"""

print "Используйте символ \" для вывода кавычек на экран."
print "Символ \t используется для вывода табуляции."

# Значения специальных символов.

Символы Что делает
\\ Обратная косая черта (\)
\' Одинарная кавычка (')
\" Двойная кавычка (")
\a ASCII Bell (BEL)
\b ASCII Backspace (BS)
\f ASCII Formfeed (FF)
\n ASCII Linefeed (LF)
\N{name} Character named name in the Unicode database (Unicode only)
\r ASCII Переход на следующую строку
\t ASCII Табуляция
\uxxxx Character with 16-bit hex value xxxx (Unicode only)
\Uxxxxxxxx Character with 32-bit hex value xxxxxxxx (Unicode only)
\v ASCII Vertical Tab (VT)
\ooo Character with octal value ooo
\xhh Character with hex value hh

# Ввод данных из консоли и запись их в переменные.

print "Сколько вам лет?"
age = raw_input()
print "Какой у вас рост?"
height = raw_input()
print "Какой у вас вес?"
weight = raw_input()
print "Вам %r лет, ваш рост %r сантиметров и ваш вес равен %r килограмм." % (age, height, weight)
print "Данные из консоли берутся как строки. Поэтому используется форматер %r"
print "Для преобразования вводимых данных в числа воспользуйтесь следующим кодом:"
digits = int(raw_input())
print "%d - это числовые данные" % digits
# Стоит избегать использование просто функции input() для ввода данных, из-за того, что она не всегда работает правильно.
name = raw_input ("Как вас зовут? ")
print name

# Подстановка значений в программу при её запуске из консоли

Перенесите в ваш файл следующий код:

# -*- coding: utf-8 -*-

from sys import argv

script, first, second, third = argv

print "Вызван script: ", script
print "Ваша перевая переменная это: ", first
print "Ваша вторая переменная это: ", second
print "Ваша третья переменная это: ", third

Введите в консоли имя вашего файла и список модулей:
my_programm.py first 2nd 3rd
и нажмите Enter.

В результате преденные значения по порядку будут подставлены в ваши переменные и сообщения будут выведены на экран.

# Чтение содержимого текстового файла и вывод его на экран.

Создайте текстовый файл с именем sample.txt и поместите его в папку с вашей программой my_programm.py.

В файл sample.txt вставьте следующий текст:

Этот текст находится во внешнем файле.
При запуске программы он отображается на экране.
Это очень здорово!

Далее откройте файл с вашей программой и введите в него следующий код:

# -*- coding: utf-8 -*-

from sys import argv

script, filename = argv

txt = open(filename)

print "Мы открываем файл %r и выводим из него следующий текст:" % filename
print txt.read()

txt.close()

Теперь откройте консоль и запустите вашу программу с параметром соотвествующим имени вашего файла с текстом (sample.txt):

my_programm.py sample.txt

В результате выполнения вашей программы содержимое файла sample.txt будет выведено на экран.

# Чтение и запись данных в файлы

Основные команды чтения и записи данных в файлы:
read() - читает содержимое файла, которое может быть также присвоено переменной.
readline() - считывает только одну строку из файла.
truncate() - удаляет все содержимое из файла.
write("текстовое содержимое") - записывает текстовое содержимое в файл.
close() - закрывает файл. (Аналогично команде File->Save.. в вашем текстовом редакторе.)

Запустите вашу программу my_programm.py, вставив в неё следующий код:

# -*- coding: utf-8 -*-

filename = raw_input ("Введите имя файла:")
target = open (filename, "w") # "w" означает открыть файл с разрешением на запись

print "Сейчас мы удалим все содержимое из файла %r." % filename
target.truncate()

line1 = raw_input("Строка 1:")
line2 = raw_input("Строка 2:")
line3 = raw_input("Строка 3:")

print "Теперь мы запишем в файл введенные строки."

target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

print "Далее мы закроем файл."

target.close()

Парамеры функции open()
"r" - открыть файл только для чтения.
"w" - открыть файл для записи.
"a" - открыть файл для добавления в него нового фрагмента.

# Копирование содержимого из одного файла в другой файл.

 # -*- coding: utf-8 -*-

from sys import argv
from os.path import exists

script, from_file, to_file = argv

print "Сейчас мы скопируем содержимое из файла %r в файл %r." % (from_file, to_file)

first_file = open(from_file)
file_content = open_from_file.read()

print "Содержимое копируемого файла занимает %d байт." % len(file_content)

print "Существует ли файл, в который мы будем вставлять содержимое? %r" % exists(to_file)

second_file = open(to_file, 'w')
second_file.write(file_content)

first_file.close()
second_file.close()

print "Копирование успешно завершено."

При запуске программы из коносли добавьте имя любого файла, из которого будет скопировано содержимое, и имя любого файла, в который оно будет вставлено:

my_programm.py copy.txt paste.txt

# Массивы - списки

the_count = [1, 2, 3, 4, 5]
fruits = ['apples', 'oranges', 'pears', 'apricots']
change = [1, 'pennies', 2, 'dimes', 3, 'quarters']
change[0] = 'one'
print change[0]
print the_count

# Хэш - массивы - словари

cities = {
    'CA': 'San Francisco',
    'MI': 'Detroit',
    'FL': 'Jacksonville'
}

# Добавим еще значения в массив.
cities['NY'] = 'New York'
cities['OR'] = 'Portland'

# Выведем некотрые значения из массива на экран.
print "NY - это: ", cities['NY']
print "OR - это: ", cities['OR']

for abbrev, city in cities.items():
    print "%s соотвествует городу %s" % (abbrev, city)

city = cities.get('Texas', None)

if not city:
    print "Простите, но Texas нет в массиве."

# Условия

dogs = 10
cats = 20

if dogs > cats:
    print "Собак больше, чем кошек."
elif dogs < cats:
    print "Собак меньше, чем кошек."
else:
    print "Число собак равно числу кошек."

# Условия могут быть вложенными. В этом случае вложенные условия отделяются дополнительными четыремя пробелами от левой границы экрана.

# В Python нет уловий вида switch-case.

# Циклы

# В Python циклы отличаются от классических. Основная идея в них - это перебор элементов, что в принципе и происходит в любом цикле в других языках программирования.

# -*- coding: utf-8 -*-

count = [1, 2, 3, 4, 5] # Это массив.

# Циклы For

# В этом цикле производится перебор всех элементов массива.
for number in count:
    print "Это счет: %d" % number
   
elements = [] # Так создается пустой массив

# Это пример классического цикла с шагом +1. Шаг цикла задается через range().
for i in range(0,10):
    elements.append(i)

for i in elements:
    print "Элемент %d был добавлен в массив." % i

#  Циклы While

i = 0
numbers = []

while i < 6:
    print "В массив добавлено число %d" % i
    numbers.append(i)
    i = i + 1

# Функции

# Определиение функции
def print_arguments (arg1, *argv):
    # Все содержимое функции должно быть отделено 4 пробелами слева.
    arg2, arg3 = argv
    print "Аргумент 1: %r, аргумент 2: %r, аргумент 3: %r." % (arg1, arg2, arg3)
# Тело функции завершает на следующей строче, начинающейся без пробелов прямо от левой границы экрана.

# Выполнение функции
print_arguments ("Один", "Два", "Три")

Звездочка * у argv позволяет принять функции несколько аргументов в виде списка. В большинстве случаев такой способ передачи аргументов в функцию не используется.

# Функция, возвращающая значение, после своего выполнения.

def sum(a, b):
    return a + b

print "Сумма равна: %d" % sum (2, 5)

# Функцию можно передавать в качестве аргумента и вызывать её через Callback.

def sum():
    return 2 + 5
   
def callback(c):
    return c()

print "Сумма равна: %d" % callback(sum)

# Функции могут возвращать несколько значений в виде спика, разделенного запятыми.

def list_values():
    return "one", "two", "three"

var1, var2, var3 = list_values()

print var1
print var2
print var3

# Модули - импортирование кода из других файлов

# Для того, чтобы загрузить код из другого файла, необходимо сделать import.
# После этого вызов кода осуществляется через имя импортированного файла.

Файл mystuff.py
# Этот код размещен в файле mystuff.py

fruit = "pineapple"

def apple():
    print "I am apple!"
   
Файл my_programm.py
# Этот код размещен в основном исполняем файле my_programm.py

import mystuff

print mystuff.fruit
mystuff.apple

# Поскольку модули импортируются, то они могу существовать только в одном экземляре, в отличии от классов.

# Также можно импортировать из файла отдельные классы или функции с переменными.

Файл my_programm.py
from mystuff import apple

apple()

# Или можно импортировать все сразу, используя символ *.

Файл my_programm.py
from mystuff import *

apple()

# Классы и Объекты 

# Классы представляют из себя мини-модули. Они предназначены для группировки и изолирования функций и данных. Но в отличии от модулей, классы могут существовать во множестве экземпляров, называемых объектами.

# Методы в классах всегда имеют всегда имеют первый аргумент под названием self.

# -*- coding: utf-8 -*-

class Employee:
    pass # pass означает, что класс пустой, в нем пока ничего нет.

def work():
    print "I am working."
   
john = Employee() # Создание объекта рабочий.

# Заполнение объекта данными
john.name = 'John Doe'
john.dept = 'computer lab'
john.salary = 1000
john.work = work

print john.name
print john.dept
print john.salary

john.work()

class MyStuff(object):

    txt = "Super text!"

    # Методы в классах всегда имеют всегда имеют первый аргумент под названием self.
    def __init__(self):
        self.tangerine = "And now a thousand years between"

    def apple(self):
        print "I AM CLASSY APPLES!"

thing = MyStuff()
print thing.txt
print thing.tangerine
thing.apple()

class A(object):
    def __init__(self, x): # атрибут получает значение в конструкторе
        self.x = x

a = A(5)
print a.x

class A(object):
    def __init__(self, x):
        self._x = x
    def getx(self): # метод для получения значения
        return self._x
    def setx(self, value): # присваивания нового значения
        self._x = value
    def delx(self): # удаления атрибута
        del self._x                
    x = property(getx, setx, delx, "Свойство x")  # определяем x как свойство

a = A(5)
# или a.x = 5    
print a.x  # Синтаксис доступа к атрибуту при этом прежний

class Song(object):

    def __init__(self, lyrics):
        self.lyrics = lyrics

    def sing_me_a_song(self):
        for line in self.lyrics:
            print line

happy_bday = Song(["Happy birthday to you",
                   "I don't want to get sued",
                   "So I'll stop right there"])

bulls_on_parade = Song(["They rally around the family",
                        "With pockets full of shells"])

happy_bday.sing_me_a_song()

bulls_on_parade.sing_me_a_song()

# Для создания экземпляра класса, достаточно вызвать класс по имени и задать параметры конструктора:
class Point:
         def __init__(self, x, y, z):
             self.coord = (x, y, z)
         def __repr__(self):
             return "Point(%s, %s, %s)" % self.coord

p = Point(0.0, 1.0, 0.0)

# Специальные методы вызываются при создании экземпляра класса (конструктор) и при удалении класса (деструктор).
# В языке Python реализовано автоматическое управление памятью, поэтому деструктор требуется достаточно редко, для ресурсов, требующих явного освобождения.

class Line:
    # Конструктор создает объект с начальными параметрами.
    def __init__(self, p1, p2):
        self.line = (p1, p2)
    # Деструктор удаляет созданный объект из памяти компьютера.
    def __del__(self):
        print "Удаляется линия %s - %s" % self.line

# Создание объекта. Срабатывает метод __init(self, p1, p2)__       
l = Line((0.0, 1.0), (0.0, 2.0))

# Удаление объекта. Срабатывает метод __del__
del l

# Наследование классов.

class Parent(object):

    def implicit(self):
        print "PARENT implicit()"

class Child(Parent):
    pass

dad = Parent()
son = Child()

dad.implicit()
son.implicit()

# Наследованием и переопределение методов в потомках классов.

class Parent(object):

    def override(self):
        print "PARENT override()"

class Child(Parent):
  
    def override(self):
        print "CHILD override()"

dad = Parent()
son = Child()

dad.override()
son.override()
# Явно указав имя класса, можно обратиться к методу родителя, как впрочем и любого другого объекта.

class Child(Parent):
    def __init__(self):
        Parent.__init__(self)

# В общем случае для получения класса-предка применяется функция super.

class Child(Parent):
    def __init__(self):
        super(Child, self).__init__(self)

# Таким образом в классе-потомке можно вызвать неизмененный родительский метод после его переопределения.

class Parent(object):

    def altered(self):
        print "PARENT altered()"

class Child(Parent):
   
    def altered(self):
        print "CHILD, BEFORE PARENT altered()"
        super(Child, self).altered()
        print "CHILD, AFTER PARENT altered()"

dad = Parent()
son = Child()

dad.altered()
son.altered()

# Класс-потомок также может наслежовать методы и атрибуты от нескольких классов-родителй.

class SuperFun(Child, BadStuff): # Класс наследует от 2-х классов.
    pass

Получать доступ к классам и модулям можно тремя способами:

# стиль массива
mystuff['apples']

# стиль модуля
mystuff.apples()
print mystuff.tangerine

# стиль класса
thing = MyStuff()
thing.apples()
print thing.tangerine

Ключевые слова:

and
del
from
not
while
as
elif
global
or
with
assert
else
if
pass
yield
break
except
import
print
class
exec
in
raise
continue
finally
is
return
def
for
lambda
try

Типы переменных:


True
False
None
strings
numbers
floats
lists (массивы)

Escape-символы:

\\
\'
\"
\a
\b
\f
\n
\r
\t
\v

Строковые форматеры для использования в print:

%d
%i
%o
%u
%x
%X
%e
%E
%f
%F
%g
%G
%c
%r
%s
%%

Операторы:

+
-
*
**
/
//
%
<
>
<=
>=
==
!=
<>
( )
[ ]
{ }
@
,
:
.
=
;
+=
-=
*=
/=
//=
%=
**=

8 комментариев: