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

 

Use the source, Luke

 

Примеры программ на языке программирования Python.

 

Неформальный девиз обучения языку Python:  "Use the source, Luke"  (пользуйся источниками, Василий Иванович) (перевод: изучайте всякий текст на языке Python, который попадёт вам в руки). В этом уроке собраны примеры небольших программ на языке программирования Python, демонстрирующих его синтаксис и некоторые из рассмотренных выше возможностей. Всё тщательно закомментировано – пользуйтесь!

 

 

Нахождение 10 наиболее частых слов на web странице

 

import string                       # импортируем модуль для работы со строками

from urllib2 import urlopen         # из модуля urllib2 импортируем функцию urlopen

 

u = urlopen("http://python.org")    # открываем URL на чтение

words = {}                          # связываем имя words с пустым словарём

                                    # (словарь — неупорядоченный [[ассоциативный массив]])

for line in u.readlines():          # читаем u по строкам

    line = string.strip(line, " \n")    # отбрасываем начальные и конечные пробелы

    for word in line.split(" "): # режем каждую строку на слова, ограниченные пробелами

        try:                            # блок обработки исключений

            words[word] += 1            # пытаемся увеличить words[word] на единицу

        except KeyError:                # если не получилось (раньше words[word] не было)

            words[word] = 1             # присваиваем единицу

 

# теперь словарь words содержит частоту встречаемости каждого слова.

# Например, words может содержать {"яблоко":5, "апельсин": 12, "груша": 8}

 

pairs = words.items()               # делаем из словаря список пар

                                    # pairs == [("яблоко",5), ("апельсин",12), ("груша",8)]

pairs.sort(lambda a, b: b[1]-a[1])  # сортируем по убыванию второго элемента пары

 

for p in pairs[:10]:                # печатаем первые 10 элементов списка

    print p[0], p[1]

 

 

 

Более сложный пример – быстрая сортировка Хоара

 

#!/usr/bin/env python

 

# Written by Magnus Lie Hetland

 

"Everybody's favourite sorting algorithm... :)"

 

def partition(list, start, end):

    pivot = list[end]   # Пусть последний элем. будет разделяющим,

    bottom = start-1    # Начинаем извне разделяемой части списка

    top = end           # Аналогично

 

    done = 0

    while not done:     # Пока не все элем. разделены ...

 

        while not done: # Пока мы не найдём

                        # неупорядоченный элемент ...

            bottom = bottom+1 # ... Двигаем нижний индекс вверх.

 

            if bottom == top: # Если он совпадёт с верхним ...

                done = 1     # ... то всё сделано.

                break

 

            if list[bottom] > pivot:     # Не является ли нижний эл.

                             #неупорядоченным?

                list[top] = list[bottom]# Тогда перемещаем его

                        # на место верхнего ...

                break        # ... и начинаем поиск сверху.

 

        while not done: # Пока не найдём неупорядоченный эл. ...

            top = top-1 # ... двигаем верхний индекс вниз.

 

            if top == bottom: # Если он совпал с нижним ...

                done = 1     # ... то всё сделано.

                break

 

            if list[top] < pivot:  # Является ли верхний

                             # элем. неупорядоченным?

                list[bottom] = list[top]# Если да, то перемещаем

                  # его на место нижнего ...

                break   # ...и начинаем поиск снизу.

 

    list[top] = pivot   # Помещаем разделяющий элемент на место.

    return top    # И возвращаем его индекс

            # (точку разделения подсписков).

 

 

def quicksort(list,start,end):

    if start < end:     # Если есть хотя бы

                        # два элемента ...

        split = partition(list, start, end)    # ...то разделяем на

                                   # два подсписка и ...

        quicksort(list, start, split-1)  # ...сортируем обе половины.

        quicksort(list, split+1, end)

    else:

        return

 

 

if __name__=="__main__":# Если этот скрипт выполняется как

                  # независимая программа:

    import sys

    list = sys.argv[1:] # Получаем аргументы командной строки

    start = 0

    end = len(list)-1

    quicksort(list,start,end) # Сортируем весь список аргументов

    import string

    print string.join(list)  # Распечатываем сортированный список.

    sys.exit (0)  # Выход из программы.

 

 

           

 

 

Hosted by uCoz