Ru-Board.club
← Вернуться в раздел «Web-программирование»

» Язык программирования Python (Питон, Пайтон)

Автор: dvs
Дата сообщения: 02.09.2003 21:08
Программка на Питоне - для тех, кто хочет посмотреть на его красивый синтаксис:

WordCount - подсчитать слова в тексте

# Import the string module, so we can call Python's standard
# string-related functions.
import string

def CountWords(Text):
"Count how many times each word occurs in Text."
# A string immediately after a def statement is a
# "docstring" - a comment intended for documentation.
WordCount={}
# We will build up (and return) a dictionary whose keys
# are the words, and whose values are the corresponding
# number of occurrences.

CurrentWord=""
# To make the job cleaner, add a period at the end of the
# text; that way, we are guaranteed to be finished with
# the current word when we run out of letters:
Text=Text+"."

# We assume that ' and - don't break words, but any other
# nonalphabetic character does. This assumption isn't
# entirely accurate, but it's close enough for us.
# string.letters is a string of all alphabetic characters.
PiecesOfWords = string.letters + "'-"

# Iterate over each character in the text. The
# function len() returns the length of a sequence,
# such as a string:
for CharacterIndex in range(0,len(Text)):
CurrentCharacter=Text[CharacterIndex]

# The find() method of a string finds
# the starting index of the first occurrence of a
# substring within a string, or returns -1
# if it doesn't find the substring. The next
# line of code tests to see whether CurrentCharacter
# is part of a word:
if (PiecesOfWords.find(CurrentCharacter)!=-1):
# Append this letter to the current word.
CurrentWord=CurrentWord+CurrentCharacter
else:
# This character is not a letter.
if (CurrentWord!=""):
# We just finished off a word.
# Convert to lowercase, so "The" and "the"
# fall in the same bucket.
CurrentWord = string.lower(CurrentWord)

# Now increment this word's count.
CurrentCount=WordCount.get(CurrentWord,0)
WordCount[CurrentWord]=CurrentCount+1

# Start a new word.
CurrentWord=""
return (WordCount)

if (__name__=="__main__"):
# Read the text from the file song.txt.
TextFile=open("song.txt","r")
Text=TextFile.read()
TextFile.close()

# Count the words in the text.
WordCount=CountWords(Text)
# Alphabetize the word list, and print them all out.
SortedWords=WordCount.keys()
SortedWords.sort()
for Word in SortedWords:
print Word,WordCount[Word]


результат вроде этого:
sortedwords 3
standard 1
start 1
starting 1
statement 1
string 10
string-related 1
substring 2
such 1
tests 1
text 12


Добавлено
CGIDebug

import sys
import traceback
sys.stderr = sys.stdout
print "Content-Type: text/html\n"
try:
# The script body goes here!
except:
print "\n\n<PRE>"
traceback.print_exc()



Feedback

#!python
import cgi
import smtplib
import sys
import traceback

# Set these e-mail addresses appropriately
SOURCE_ADDRESS="robot_form@gianth.com"
FEEDBACK_ADDRESS="dumplechan@seanbaby.com"

sys.stderr = sys.stdout
print "Content-Type: text/html\n"
try:
fields=cgi.FieldStorage()
if (fields.has_key("name") and fields.has_key("comments")):
UserName=fields["name"].value
Comments=fields["comments"].value
# Mail the feedback:
Mailbox=smtplib.SMTP("mail.seanbaby.com")
MessageText="From: <"+SOURCE_ADDRESS+">\r\n"
MessageText+="To: "+FEEDBACK_ADDRESS+"\r\n"
MessageText+="Subject: Feedback\r\n\r\n"
MessageText+="Feedback from "+UserName+":\r\n"+Comments
Mailbox.sendmail(SOURCE_ADDRESS, FEEDBACK_ADDRESS,
MessageText)
# Print a simple thank-you page:
print "<h1>Thanks!</h1>Thank you for your feedback!"
else:
# They must have left "name" and/or "comments" blank:
print "<h1>Sorry...</h1>"
print "You must provide a name and some comments too!"
except:
# Print the traceback to the response page, for debugging!
print "\n\n<PRE>"
traceback.print_exc()



HelloWorld

# (add #! line here under UNIX, or if using Apache on Windows)
import cgi
# Part 1: Content-Type header, followed by a blank line
# to indicate the end of the headers.
print "Content-Type: text/html\n"
# Part 2: A simple HTML page
print "<title>Gumby</title>"
print "<html><body>My brain hurts!</body></html>



NewsSlurp

import nntplib
import sys
def dump_articles(news,TargetGroup,TargetPoster):
GroupInfo=news.group(TargetGroup)
ArticleList=news.xhdr("from",GroupInfo[2]+"-"+GroupInfo[3])

dumpfile = open("newsfeed.txt","w")
for ArticleTuple in ArticleList:
(MessageID,Poster)=ArticleTuple
if (Poster.find(TargetPoster)!=-1):
ArticleText=news.body(MessageID)[3]
for ArticleLine in ArticleText:
dumpfile.write(ArticleLine+"\n")
dumpfile.flush()
dumpfile.close()

news=nntplib.NNTP("news.fastpointcom.com")
dump_articles(news,"alt.religion.kibology","kibo@world.std.com")



popmail

import poplib
# Replace server, user, and password with your
# mail server, user name, and password!
Mailbox=poplib.POP3("mail.seanbaby.com")
Mailbox.user("dumplechan@seanbaby.com")
Mailbox.pass_("secretpassword")
MyMessage=Mailbox.retr(1)
FullText="" # Build up the message body in FullText
PastHeaders=0
for MessageLine in MyMessage[1]:
if PastHeaders==0:
# A blank line marks the end of headers:
if (len(MessageLine)==0):
PastHeaders=1
else:
FullText+=MessageLine+"\n"
Mailbox.quit()
print FullText



WebSearch

import httplib
import htmllib
import urllib
import formatter
# Encode our search terms as a URL, by
# passing a dictionary to urlencode
SearchDict={"q":"Charles Dikkins",
"kl":"XX","pg":"q","Translate":"on"}
SearchString=urllib.urlencode(SearchDict)
print "search:",SearchString
Request=httplib.HTTP("www.altavista.com")
Request.putrequest("POST","/cgi-bin/query")
Request.putheader(?€?Accept?€™, ?€?text/plain?€™)
Request.putheader(?€?Accept?€™, ?€?text/html?€™)
Request.putheader(?€?Host?€™, ?€?www.alta-vista.com?€™)
Request.putheader("Content-length",`len(SearchString)`)
Request.endheaders()
Request.send(SearchString)
print Request.getreply()
# Read and parse the resulting HTML
HTML=Request.getfile().read()
MyParser=htmllib.HTMLParser(formatter.NullFormatter())
MyParser.feed(HTML)
# Print all the anchors from the results page
print MyParser.anchorlist


все эти примерчики стырены отсюда: http://www.pythonapocrypha.com

Добавлено
точнее
http://www.pythonapocrypha.com/PySource.zip
Автор: apatit
Дата сообщения: 02.09.2003 23:10
Эти бы скрипты да в сравнении с аналогичными перловыми и пхп-шными хотя бы...
Автор: dvs
Дата сообщения: 14.11.2003 20:30

Цитата:
...
As mentioned earlier, the Ensemble/Legacy toolkit is written primarily in C++.
However, all of the functionality is “wrapped” to be available to the Python
programming language as modules. Python is a high-level object oriented
interpreted programming language that is easy to learn and use. In fact, Python code
is so readable it is often called “executable pseudocode”. Python supports
heterogeneous lists, hash arrays (called “dictionaries”), and other high-level data
structures which are absent from the core C and C++ languages. Python provides a
number of advantages over other high-level object-oriented interpreted programming
languages. First and foremost, Python is is easy to learn and use, unlike C, or C++.
Second, it is easy to understand Python programs written by others, unlike perl,
because the Python syntax enforces readability. By using a language which is easy
to learn and use, we make it more likely that Ensemble/Legacy will be adopted by
users in the scientific community. Also, Python is open source, cross-platform
(Unix, Windows, and Macintosh), and is being adopted to solve problems in many
different application spaces.
...
Автор: max67
Дата сообщения: 20.01.2004 18:56
Ладно, вижу что тема заглохла, но поделится радостью то хочется. Проголосовал опять же.
Сразу оговорюсь, что не программист, но иногда приходится кодировать для работы и для себя.

На днях появилась необходимость обработать кучку html файлов (под win32). Счас, думаю, на то ведь WSH и существует, что б автоматизировать это безобразие. Естественный выбор наречия при этом был VBscript или Jscript. Шасть в интернет, надеясь, что задача тривиальная - оказалось фиг. Бился сам два дня (и это называется автоматизировал что б сэкономить время) со словарем. Пришел к выводу, что инструментарий подкачал.

Сижу, вяло читаю документацию на awk и perl (типа с чем быстрее разберусь). Попалась ссылка на питон, решил и с ним ознакомится. Т.е. я и раньше про него знал, просто считал, что языков много а я один. В конце концов perl это круто и универсально, а awk вроде как изначально под парсинг заточен.

С питоном это просто какой-то праздник сердца получился. Сразу выявилось еще несколько удобных применений для себя (автосерфинг и контейнер для отладки dll'шек).

Если коротко, больше всего приятно удивили: ясность, элегантность, расширяемость, кроссплатформенность, реализация строк и масивов. Встроенная документация - это образец для подражания.

Вот такая саксэсив-стори получилась, даже читать противно.
Имхо для эпизодического скрипто-писания (at least) под win32 Питон это самое то. Конечно нет такого фан, как, например, с контекстами в perl, зато на листинг посмотреть приятно.
Автор: arto
Дата сообщения: 20.01.2004 22:37
WordCount.pl:
# perl -ne 'while (m|\w+|g) { $a{lc $&}++; }; END {printf "%s: %d\n",$_,$a{$_} foreach (keys %a);}' file

PopMail.pl
# perl -MNet::POP3 -e '$pop=Net::POP3->new(shift); $pop->login(@ARGV); $h = $pop->list (); foreach (keys %$h) { $a=$pop->get ($_); print foreach (@$a); }' server login passwd

# WebSearch.pl
# perl -MWWW::Search -e '$s=WWW::Search->new(shift);$s->native_query(WWW::Search::escape_query("@ARGV")); while ($a=$s->next_result()) { print $a->url (),"\n"; }' AltaVista perl vs. python

остальное лень
Автор: dvs
Дата сообщения: 24.02.2004 22:03
Хорошая книжка по Питону: http://ru.diveintopython.org

Знающим английский лучше сюда: http://diveintopython.org
Автор: BoP200
Дата сообщения: 25.02.2004 12:21
ИМХО питон подходит для праектов, в которых запланировано развитеи и предпологающий структурные изменения. всякую мелкую вигню проще писать на перле - не питоне дольше объектную модель будешь обдумывать - если мадель не нужна - то не нужен и питон. btw, вопорс к пиплу - подскажите красивое решение для содания плагинов на перле - в питоне я просто делаю import plugins/* получаю список методов классов и их допустимые параметры и в зависимости от этого что-то делаю. Честно говоря красивой реализации на перле придумаьт не смог.
Автор: arto
Дата сообщения: 27.02.2004 07:46
приведите код
Автор: IntenT
Дата сообщения: 27.02.2004 11:06

Цитата:
ИМХО питон подходит для праектов, в которых запланировано развитеи и предпологающий структурные изменения

Канечно, а все что на пхп или дотнете пишут - это все реально в корзину сразу после релиза

BoP200
Знаешь сколько тут таких крутых програмеров проскакивало, которые с горем пополам выучили полтора синтаксиса, и кричало что тот язык, на который они убили пол-гола и есть самый лучший??? А как-же иначе, ведь не станут же они учить гавно в натуре. Раз выучил - значит это самое оно, а остальное - сакс и отстой.

Попустись

Если ты неумеешь програмить на перле или пхп, или шарпе, это не значит что языки плохие. это значит что кто-то плохой танцор
Автор: BoP200
Дата сообщения: 28.02.2004 01:23
IntenT
Ой. Самый лутший - это ассемблер. Но его не знаю. То что было высказано - это сугубо ИМХО - я пишу на perl несколько другие вещи чем на python. И всего-то. А вот с грамотностью в том посте у меня большие проблемы. Прочитал - самому глаза режет. Так что извиняйте
Реализация ООП с питоне мне кажется значитьльно более простой, и, возможно, более гибкой чем в perl. Я не могу утверждать, что хорошо знаю perl или python. Плохих языков не бывает. Бывает неудачный выбор языка для конкретной задачи и еще быват плохие программисты. шарп я просто не рассматривал в данном контекте - с моей точки зрения ПОКА это то же ассемблер - работает (как продакшн решение) только в родной для него среде. (Дя я знаю, про релизы под linux & freebsd, dot gnu и т.п.). Python почти везде. Как и perl и php. php меня не интересует т.к. приличный гуевых биндингов я для него пока не видел. И, как мне какжется, (пусть меня поправят, если не прав) ни для чего кроме web development не пригоден. php - это хороший молоток для забивания гвоздей одного типа.
Автор: IntenT
Дата сообщения: 29.02.2004 15:04
BoP200

Цитата:
Реализация ООП с питоне мне кажется значитьльно более простой, и, возможно, более гибкой чем в perl

открою тебе большой секрет - в перле НЕТ ООП. Перл - процедурный язык.


Цитата:
И, как мне какжется, (пусть меня поправят, если не прав) ни для чего кроме web development не пригоден

Обрати внимание на название форума



Автор: dvs
Дата сообщения: 11.05.2004 11:35
Кто на примерах хочет сравнить Python с C++, Java, C# - вам сюда:
http://www.brpreiss.com/books/opus4 Data Structures and Algorithms
with Object-Oriented Design Patterns in C++
http://www.brpreiss.com/books/opus5 Data Structures and Algorithms
with Object-Oriented Design Patterns in Java
http://www.brpreiss.com/books/opus6 Data Structures and Algorithms
with Object-Oriented Design Patterns in C#
http://www.brpreiss.com/books/opus7 Data Structures and Algorithms
with Object-Oriented Design Patterns in Python

Добавлено
Вычисление числа Пи
Java:

Код: public class Example
{
public static double pi (int trials)
{
int hits = 0;
for (int i = 0; i < trials; ++i)
{
double x = RandomNumberGenerator.nextDouble ();
double y = RandomNumberGenerator.nextDouble ();
if (x * x + y * y < 1.0)
++hits;
}
return 4.0 * hits / trials;
}
}
Автор: arto
Дата сообщения: 11.05.2004 12:00
# perl -e 'foreach (0..$ARGV[0]) { $h++ if ((rand ()**2 + rand ()**2) < 1.0) }; printf "%.5f\n",4*$h/$ARGV[0];' 10000000
3.14157
Автор: xaos
Дата сообщения: 14.05.2004 08:18
C++:

Код: Double Pi(UINT trial){
Gen = new RandomNumberGenerator;
UINT hints = 0;
for(UINT i = 0; i < ){
double x,y = Gen.Next();
if((x*x + y*y) < 10){ hits++; }
return 4.0 * hits / trials;
}
}
Автор: dvs
Дата сообщения: 14.05.2004 10:51
xaos

Цитата:
Моё мнение - основной недостаток питона это ОТСТУПЫ!

К ним привыкаешь и приспосабливаешься где-то за неделю, а дальше они становятся одним сплошным преимуществом. _Имхо_.
Автор: IntenT
Дата сообщения: 14.05.2004 12:59
Вотвы мне скажите, только честно.. В питоне есть ООП?
как-то неохота качать ман ради такой мелочи
Автор: apatit
Дата сообщения: 14.05.2004 17:40
IntenT

Цитата:
открою тебе большой секрет - в перле НЕТ ООП. Перл - процедурный язык.


Создатели языка считают иначе. Только вот на мой взгляд ООП там притянут за уши. Но работает.
А в Питоне самое настоящее ООП.
Автор: dvs
Дата сообщения: 17.05.2004 18:59
Новая книжка по Питону, бета-версия

http://book.it-arts.ru/


Цитата:
---------- Forwarded message ----------
From: Чаплыгин Антон <ustas sobaka it-arts.ru>
Subject: Книга по Питону
To: ods sobaka strana.ru

Привет.

Выложил свой труд по Питону: http://book.it-arts.ru/. Эта книга
ориентирована на тех, кто совсем не знаком с программированием. Основана
она на "How to think linke a computer scientist"
(http://www.greenteapress.com/thinkpython/). Книжка свободная. Вероятно,
она заинтересует кого-то из сообщества русскоязычных разработчиков на
Питоне, кто-то захочет поучаствовать в дальнейшей работе над ней.
Хотелось бы привлечь людей заинтересованных в популяризации Питона. Не
могли бы Вы мне в этом помочь?

--
С уважением, Антон


Добавлено
http://ru.wikipedia.org/wiki/Python

Добавлено
Обучающий комплекс по языку программирования Питон
http://desk.nl/~vadim/python/
Автор: CheRt
Дата сообщения: 17.05.2004 23:19
Вот народ спорит все какой язык лучше, какой хуже! Гыг, имхо для вЁб-скриптинга все популярнейшии языки отличны!
Я вот к примеру незнаю питон, паршивенько знаком с пхп, но пока для всех моих задумок хватает перла(интересно почему?!) и по скорости(заоодно учишься оптимизации грамотной ), и по функциональности. Да вообще иногда напишу с дури какой-нибудь участок, сам сразу невоткну что я написал, а ведь работает и зачастую даже правильно =)

Так что осталось одно, не париться насчет того какой язык лучше, а долбить пока что тот, который выбрал вначале и лучше знаешь! Так что осталось лишь помолиться богу Перлу и пойти спать
Автор: linP
Дата сообщения: 18.05.2004 18:56
dvs

Спасибо за инфу по Питону , собираюсь приступить к изучению этого языка ... Выбрал , т.к. мне кажется , что потом будет проще с Python=> C => C++
Автор: dvs
Дата сообщения: 18.05.2004 19:20
linP
Цитата:
Спасибо за инфу по Питону , собираюсь приступить к изучению этого языка ... Выбрал , т.к. мне кажется , что потом будет проще с Python=> C => C++

Если не понадобится писать какие-то сверх-быстрые программы или системные вещи, или начальник не заставит, то можно и не изучать другие языки, т.к. на питоне можно делать всё.

Автор: Swappp
Дата сообщения: 20.05.2004 00:03
linP

Цитата:
Python=> C => C++

Сомневаюсь, что после ОО языка будет легко перейти на процедурный язык (на C), а вот на C++ легче.
Автор: dvs
Дата сообщения: 26.05.2004 16:44
http://python.ca/nas/log/200401/index.html#30_001
Автор: linP
Дата сообщения: 26.05.2004 22:06
Swappp

Дык читал , что для перехода на С++ , нужны обязательно базовые знания С )
Ну , например , чтобы читать Страуструпа .... ? А Питон выбрал за его переносимость с винды на linux
Автор: dvs
Дата сообщения: 10.06.2004 19:47
а чё затихли?
Автор: xaos
Дата сообщения: 10.06.2004 21:46

Цитата:
Дык читал , что для перехода на С++ , нужны обязательно базовые знания С

а как же я сразу стал С++ учить?
Знания С здесь не обязательны...
Хм..... а чё С++ на линух не переносим?
Автор: Swappp
Дата сообщения: 11.06.2004 01:30
linP

Цитата:
Дык читал , что для перехода на С++ , нужны обязательно базовые знания С )

Бред, при чем полный Они близки и очень похожи, да собственно основы у них одни, но в C нет ОО модели, что при переходи с ОО языка вызовет ломку а потом опять на ОО...

Цитата:
Хм..... а чё С++ на линух не переносим?

gcc... Если проги лево написаны, то с трудом переносим если писать все по ANSI стандарту, с использованием кроссплатформенных библиотек, легко, у меня почти весь код на C++ компилируется под Win и linux, да и теоретически не должно быть проблем под MacOS X и большинством *nix с X11.
linP
Еще про кроссплатформенное программирование вспомнил, для Python есть обертка GUI библиотеки Qt, PyQt называется, так вот, если будешь ее использовать, потом на C++ с Qt легко GUI приложения начнешь писать
P.S.
Цитата:
Отправлено: 00:06 27-05-2004
долго сюда не заглядывал , кстати сорри за оффтоп, немного не о python разговор...
Автор: dvs
Дата сообщения: 14.06.2004 12:42
Программа "99 бутылок пива" на Питоне:

Код: #!/usr/local/bin/python
# python version of 99 bottles of beer, compact edition
# by Fredrik Lundh (fredrik_lundh@ivab.se)

def bottle(n):
try:
return { 0: "no more bottles",
1: "1 bottle"} [n] + " of beer"
except KeyError: return "%d bottles of beer" % n

for i in range(99, 0, -1):
b1, b0 = bottle(i), bottle(i-1)
print "%(b1)s on the wall, %(b1)s,\n"\
"take one down, pass it around,\n"\
"%(b0)s on the wall." % locals()
Автор: dvs
Дата сообщения: 16.06.2004 17:32
Используя Psyco, компилятор обработки Python. Д.Мертц
Статья о jit-компиляторе Psyco, который позволяет значительно ускорить исполнение приложений на Python.
Перевод на русский от Intersoft Lab:
Используйте Psyco, и Python будет работать так же быстро, как и С
Автор: linP
Дата сообщения: 17.06.2004 23:31
Swappp

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

А вот ещё , про PyQT я в своей книжке ничего не нашёл , автор писал только на PyGTK & Python/tk разные штуки , как : PyCalc , PyClock, PyMail, PyFtp
Может я ошибся , посмотрю внимательнее /////

а я не заглядывал долго , т.к. мучался со своим gentoo и принтерами ... плюс учёба ещё однако

Страницы: 1234567891011

Предыдущая тема: Вопрос по HTML и MS IE Explorer6.0


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.