Примеры
программ на 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) #
Выход из программы.