Пользователь
0,0
рейтинг
22 июля 2008 в 23:49

Разработка → Основы Python в кратком изложении

Когда-то давным давно, на одном закрытом форуме я пытался проводить обучение Пайтону. В общем дело там заглохло. Мне стало жалко написанных уроков, и я решил их выложить для широкой общественности. Пока самый первый, самый простой. Дальше идет интереснее, но может быть это будет не интересно. В общем, этот пост будет пробным шаром, если понравится, буду выкладывать дальше.

Python для начинающих. Глава первая. «О чем это мы»

На всякий случай, немного скучного «evangelism». Кому он надоел, можно пропустить несколько абзацев.
Python (читается как «Пайтон» а не «питон») — скриптовый язык, разработанный Гвидо ван Россумом в качестве простого языка, легкого в изучении новичку.
В наше время Пайтон – широко распространыенынй язык, который используется во многих областях:
— Разработка прикладного ПО (например linux-утилиты yum, pirut, system-config-*, IM-клиент Gajim и многие другие)
— Разработка web-приложений (мощнейший Application-сервер Zope и разработанная на его основе CMS Plone, на основе которой работает например сайт ЦРУ, и масса фреймворков для быстрой разработки приложений Plones, Django, TurboGears и многие другие)
— Использование в качестве встраиваемого скриптового языка во многих играх, и не только (в офисном пакете OpenOffice.org, 3d редакторе Blender, СУБД Postgre)
— Использование в научных рассчетах (с пакетами SciPy и numPy для расчетов и PyPlot для рисования графиков Пайтон становится практически сравним с пакетами типа MatLab)

И это конечно далеко не полный список проектов, использующих этот замечательный язык.



1. Сам интерпретатор, его можно взять тут (http://python.org/download/).
2. Среда разработки. Она для начала необязательна, да и идущий в дистрибутиве IDLE подойдет новичку, но для серъезных проектов нужно что-то посерьезней.
Для Windows я использую замечательный легковесный PyScripter (http://tinyurl.com/5jc63t), для Linux – Komodo IDE.

Хотя для первого урока достаточно будет просто интерактивной оболочки самого Пайтона.

Просто запустите python.exe. Приглашение ввода не заставит себя долго ждать, оно выглядит так:

>>>


Также можно записывать программы в файлы с расширением py, в вашем любимом текстовом редакторе, который не добавляет к тексту своих символов разметки (нет Word не подойдет). Также желательно чтобы этот редактор умел делать «умные табуляторы» и не заменял пробелы знаком табуляции.
Для запуска файлов на исполнение по ним можно щелкать 2 раза. Если консольное окно закрывается слишком быстро, вставьте в конце программы следующую строку:

raw_input()


Тогда интерпретатор будет в конце программы ждать нажатия enter.

Или ассоциируйте py-файлы в Far с Пайтоном и открывайте нажимая enter.

Наконец можно воспользоваться одной из многих удобных IDE для Пайтона, которые предоставляют и возможности отладки и подсветку синтаксиса и многие другие «удобства».

Немного теории.

Для начала, Пайтон – язык со строгой динамической типизацией. Что это означает?

Есть языки со строгой типизацией (pascal, java, c и т.п.), у которых тип переменной определяется заранее и не может быть изменен, и есть языки с динамической типизацией (python, ruby, vb), в которых тип переменной трактуется в зависимости от присвоенного значения.
Языки с динамической типизацией можно разделить еще на 2 вида. Строгие, которые не допускают неявного преобразования типа (Пайтон) и нестрогие, которые выполняют неявные преобразования типа (например VB, в котором можно легко сложить строку '123' и число 456).
Разобравшись с классификацией Пайтона, попробуем немного «поиграть» с интерпретатором.

>>> a = b = 1
>>> a, b
(1, 1)
>>> b = 2
>>> a, b
(1, 2)
>>> a, b = b, a
>>> a, b
(2, 1)


Таким, образом мы видим что присваивание осуществляется с помощью знака =. Присвоить значение можно сразу нескольким переменным. При указании интерпретатору имени переменной в интерактивном режиме, он выводит ее значение.

Следующее, что необходимо знать – как строятся базовые алгоритмические единицы – ветвления и циклы. Для начала, необходима небольшая справка. В Пайтоне нет специального ограничителя блоков кода, их роль выполняют отступы. То есть то что написано с одинаковым отступом – является одним командным блоком. Поначалу это может показаться странным, но после легкого привыкание, понимаешь что эта «вынужденная» мера позволяет получать очень читабельный код.
Итак условия.

Условие задается с помощью оператора if, который заканчивается «:». Альтернативные условия которые будут выполняться если первая проверка «не прошла» задаются оператором elif. Наконец else задает ветку, которая будет выполнена если ни одно из условий не подошло.
Обратите внимание, что после ввода if интерпретатор с помощью приглашения «...» показывает что он ожидает продолжения ввода. Чтобы сообщить ему что мы закончили, необходимо ввести пустую строку.

(Пример с ветвлениями почему-то рвет разметку на хабре, не смотря на танцы с тегами pre и code. Простите за неудобство, я его кинул сюда pastebin.com/f66af97ba, если кто-то подскажет что не так — буду очень признателен)

Циклы.

Простейшим случаем цикла является цикл while. В качестве параметра он принимает условие и выполняется до тех пор, пока оно истино.
Вот маленький пример.

>>> x = 0
>>> while x<=10:
...     print x
...     x += 1
...
0
1
2
...........
10


Обратите внимание что поскольку и print x и x+=1 написаны с одинаковым отступом, они считаются телом цикла (помните что я говорил про блоки? ;-) ).

Второй вид циклов в Пайтон – цикл for. Он аналогичен циклу foreach других языков. Его синтаксис условно таков.

for переменная in список:
команды

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

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

>>> x = "Hello, Python!"

>>> for char in x:
...     print char
...
H
e
l
...........
!


Таким образом мы можем разложить строку по символам.
Что же делать если нам нужен цикл, повторяющийся определенное число раз? Очень просто, на помощь придет функция range.

На входе она принимает от одного до трех параметров, на выходе возвращает список чисел, по которому мы можем «пройтись» оператором for.

Вот несколько примеров использования функции range, которые объясняют роль ее параметров.

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(2, 12)
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
>>> range(2, 12, 3)
[2, 5, 8, 11]
>>> range(12, 2, -2)
[12, 10, 8, 6, 4]


И маленький пример с циклом.

>>> for x in range(10):
...     print x
...
0
1
2
.....
9


Ввод-вывод

Последнее, что следует знать перед тем как начать использовать Пайтон полноценно – это как осуществляется в нем ввод-вывод.

Для вывода используется команда print, которая выводит на печать все свои аргументы в удобочитаемом виде.

Для ввода с консоли используется функция raw_input(приглашение), которая выводит на экран приглашение и ожидает ввода пользователя, возвращая то что ввел пользователь в виде своего значения.

x = int(raw_input ("Введи число:"))
print "Квадрат этого числа составляет ", x * x


Внимание! Несмотря на существование функции input() схожего действия, использовать ее в программах не рекомендуется, так как интерпретатор пытается выполнить вводимые с ее помощью синтаксические выражения, что является серьезной дырой в безопасности программы.

Вот и все для первого урока.

Домашнее задание.

1. Составить программу расчета гипотенузы прямоугольного треугольника. Длина катетов запрашивается у пользователя.
2. Составить программу нахождения корней квадратного уравнения в общем виде. Коэффициенты запрашиваются у пользователя.
3. Составить программу вывода таблицы умножения на число M. Таблица составляется от M * a, до M * b, где M, a, b запрашиваются у пользователя. Вывод должен осуществляется в столбик, по одному примеру на строку в следующем виде (например):
5 х 4 = 20
5 х 5 = 25
И так далее.
Павел Дмитриев @cleg
карма
151,8
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (196)

  • +13
    Жду продолжения!
    • НЛО прилетело и опубликовало эту надпись здесь
      • +2
        Недалекий комментарий
      • +1
        Если вы пишете программы без отступов, то мне очень жалко тех, кто потом будет их читать.
      • +3
        Python и php совсем разные языки. Php используется почти исключительно в вебе (ну и немножко в скриптовой автоматизации). Python - это язык общего назначения, на нём написано огромное количество программ под Linux, применяется в промышленной автоматизации.

        Ввести табуляцию в синтаксис - это на самом деле очень здравая идея, ведь и так все блоки кода обычно форматируются табуляцией, так зачем плодить лишние синтаксические элементы.
        • –2
          Проблема только в том, что способ табулирования у разных программистов различается :-(
          • +1
            У нормальных - нет
          • 0
            У нормальных - нет:)
            • 0
              Хм. Ну можете считать меня ненормальным, но мне иногда удобнее писать и понимать строчку int Prop { get { return _Prop; } } чем переносить и табулировать на несколько строк. Да и в нормальной IDE часто есть встроенный автоформатер, и обычно настраиваемый. Характерно, что там предусматривается несколько способов табуляции. Форматер писали ненормальные программисты?
              • +2
                На Питоне тоже можно иногда писать в одну строку (не без перегибов, но да, иногда он это допускает):

                if really(): print "o-o!"

                Главное, что нельзя писать

                if really():
                print "o-o!" # экономим аж пару начальных пробелов

                Но этого же разумно требовать и от всех других похожих языков, неспа?
              • –2
                На Питоне тоже можно иногда писать в одну строку (не без перегибов, увы, но да, иногда он это допускает):

                if really(): print "o-o!"

                Главное, что нельзя писать

                if really():
                print "o-o!" # экономим аж пару начальных пробелов

                Но этого же разумно требовать и от всех других похожих языков, неспа?
              • 0
                именно от того, что "нормально" у каждого человека свое, придумали нотации, список указаний при написании кода, чтобы и после Вас код оставался нормальным для других разработчиков(%
                • 0
                  Что сказать... Осталось еще перфокарты вспомнить - чтобы дырки строго соответствовали определенным позициям. Не спорю с нотациями, гвайдлайнами и так далее. Меня просто сильно смущает, что, привыкнув писать в соответствии со вполне_удобными_для_других_разработчиков_гвайдлайнами, рискну совершить логическую ошибку. Короче, я категорически "за" табуляцию, но предпочел бы старые добрые закорючки "{}" для обрамления блоков.
                  • +1
                    после додиеза тоже неудобно, но, как говорится, "дело привычки"(;
          • 0
            Как это? Думаю, если один раз нажать клавишу табуляции, то она ВЕЗДЕ будет восприниматься, как клавиша табуляции.
            А вообще, питоновская система индентов очень дисциплинирует и делает код ОЧЕНЬ читабельным и структурированным.
            • 0
              некоторые редакторы заменяют табуляцию 4 пробелами (правда это можно изменить в настройках)
              • 0
                У BCB6 я так и не смог это настроить.
                • 0
                  у билдера/дельфи вообще своеобразный редактор кода.. но вроде-бы в 2006й студии борландовцы его полностью изменили
            • 0
              Характерно что если имеется какой-нибудь форматер, то стили автоформатирования настраиваются. И вроде как все варианты как табулирования, так и расстановок "{" имеют право на жизнь и считаются хорошо читаемыми.
      • 0
        Не говоря уже о читаемости кода. Это просто очень удобно.
      • +2
        Удобочитаемость и все такое это несомненно круто, но строить на этом синтаксис языка... нет уж, увольте. По этой части с вами полностью согласен.
        • 0
          Вот так вот, такая странная вещь. Людей приходится заставлять делать так, как им будет удобнее.
          • +3
            Мы сделаем вас счастливыми, и ваше мнение по этому поводу нас не интересует (с)
          • 0
            Благими намерениями устлана дорога в ад.

            Но конкретно в том, чтобы язык имел определённый стиль, не вижу ничего плохого. На Си++ как-то даже неприятно работать одновременно с несколькими библиотеками с абсолютно разными стилями. А в том же Хаскеле всё просто, все функции зовутся someFoo, все типы SomeData, и табуляция, разумеется (хотя скобочная запись так же возможна).
          • 0
            Благими намерениями устлана дорога в ад.

            Но в данном случае не вижу ничего плохого в том, что у языка есть единый стиль. В Хаскеле, например, с маленькой буквы начинаются функции, с большой - данные и классы, и достаточно удобно, хотя сделано это не для человека :)
          • +1
            Блин, прошу извинить за два комментария, что-то заглючило. После отправки первого он не появился (даже обновил несколько раз страницу), а после отправки второго - появился первый (а затем и второй)
        • +1
          Поначалу - да, напрягает, да и потом иногда небольшие проблемы создаёт, но на самом деле очень удобно, когда привыкнешь. Плюс при этом не возникнет холивор на тему "где ставить { - на той же строке, где заголовок функции или на следующей". А это, я вам скажу, серьёзный холивор. Я, например, того, кто поставит на той же строчке, просто на месте порешу...
          • +1
            Когда в одной организации начали веб-девелоперов пересаживать на python (+django), первую неделю все матерились на отступы, но потом ничего — привыкли и даже оценили по достоинству. Ведь не дураки же придумали.
            • 0
              Извиняюсь, не понял. Как это выглядит-то? Приходите в контору, раздаете всем дистрибутивы и говорите - начинаем писать на джанго? Что у вас за профессия такая интересная? :)
              • 0
                Нет, я — разработчик (:
                Когда-то в компании, где я работал, решили перелазить на что-нибудь с пхп, выбирали между рельсами и джанго. Выбрали джанго, сначала всем очень не нравились обязательные отступы, отсутствие возможности присваивания в операторе if и т.п. Но потом привыкли и признали, что это всё только к лучшему.
          • +1
            а че тут спорить? не велика затея — страуструп как давал свои примеры? но если твой код нормальный, то ради бога пиши на новой каждый раз — имеешь право на мелкие отступления. (только что-то я н встречал нигде в рекомендациях такого стиля оформления кода)
            • 0
              какого?
              • 0
                я по два раза, по два раза, не повторяю не повторяю. прочитай всю цепочку и поймешь какого.
              • 0
                я тоже ставлю на новой, но знаю что правильно на той же строке :)
                • 0
                  42. Выравнивайте скобки вертикально по левой границе
                  Иногда поиск отсутствующей фигурной скобки превращается в крупную проблему. Если вы вынесете скобки туда, где их хорошо видно, то их отсутствие будет сразу же заметно:
                  while ( some_condition )
                  {
                  // внутренний блок
                  }
                  Я в самом деле не люблю так называемый стиль Кэрнигана и Ричи:
                  if( condition ){
                  code();
                  }else{
                  more_code();
                  }
                  Здесь не только трудно проверить скобки на парность, но и отсутствие зрительного разделения за счет строк, содержащих лишь открытые скобки, ведет к ухудшению читаемости.
                  • +2
                    есть как минимум 4 стиля расстановки скобок в С/С++
                    Керниган и Ричи лично рекомендую One True Bracing Style - по нему открывающая скобка не переносится на новую строчку...
  • +4
    Все больше статей для новичков появляется на Хабре :) Что ж, наверное, в этом есть и большой плюс, ведь чтобы новички стали профессионалами, надо начинать с азов. А Хабр — это просто место, где много хороших статей про IT. И пусть суровые профи не злятся и не кричат что Хабр уже не тот. В конце концов, спрос рождает предложение.
    • +2
      Суровые профи, думаю, тоже далеко не все знают python...
      • 0
        я конечно не суровый профи, но Пайтон далеко не прост. чем больше я углубляюсь, тем больше новых открытий делаю... :)
        • 0
          Вот! А чтобы начать на нём писать, можно многого и не знать. А понимание мета-классов и прочего придет с практикой.
    • 0
      действительно, у многих бывает, что нет ни времени ни желания на заморочки того, что впринципе то и использовать не будет, а эти статьи расширяют кругозор. хотя должен признать, что иногда статьи для чайников гнилые бывают: берется из середины маленький кусочек и разжевывается самому себе.
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Скажу кратко - "В избранное"!
    • 0
      аналогично, кстати.
  • –3
    Питон - великая вещь! Еще Бобук его хвалил ))) Сам учу уже некоторое время и исключительно радуюсь.
  • 0
    Спасибо!

    А как кстати сделать цикл, повторяющийся очень большое число раз?
    Ведь, как я понял range возвращает массив, при большом количестве очень длинных циклов это будет не лучшим образом сказываться на использовании памяти.
    • 0
      xrange
    • 0
      use xrange
    • +1
      range возвращает массив, вернее список. Это значит, что будет создаваться большее колличество объектов. Это верно, но в питоне есть кеширование простых объектов. Если вы создадите массив из 1000 элементов числа 1, это будет не 1000 объектов а 1, и тысяча ссылок на него. (Важно! Нумерные типы в Питоне имунны, объекты не могут быть изменены). В следсвии такого кеширования всевозможные цыклы for i in range(1000) for i in range(500) for i in range(10) не будут сильно влиять на колличество памяти.
      xrange() - возвращает итератор а не список. С ним понятно, что нет никаких проблем с памятью.
      Рекомендуется всегда использовать xrange()
      • 0
        да, я хотел про это написать, но потом решил для начала не усложнять. тем более что в 3000 будет только range - один за всех :) хотя работать будет как xrange
    • 0
      а почему xrange? есть же еще и while... да и в статье он упомянут...
    • 0
      Можно подождать до python 3.0, где range возвращает итератор и длина цикла становится совершенно не важна.
    • 0
      Можно чуть-чуть подождать пока выйдет python 3.0. Там range итератор возвращает и, соответственно, память не аффектится.
  • +1
    боюсь ошибиться, но pipe читается как пайп, а почему в закытом слоге и вдруг пайтон*?
    • НЛО прилетело и опубликовало эту надпись здесь
    • +1
      http://en.wikipedia.org/wiki/Monty_Pytho… <---- почему-то родителю языка очень нравилось это шоу...
      • +2
        Создатель языка не англичанин и не американец.
        Язык по-русски называется "питон".
        • 0
          Зачем мучаться? Ведь можно просто и лаконично написать Python.
          А кто как прочитает, это уже дело его совести :)
          • +1
            Человеческий язык не компьютерный, он фонетичен. Подразумевается более менее однозначное соответствие написанного произнесённому. А русский текст ещё и любит склонять существительные. Некириллический алфавит в тексте нежелателен, кроме аббревиатур. Впрочем, даже в этом случаен нежелателен.
          • 0
            Человеческая письменность изобретена для записи звуков, а не понятий. Одинаковое написание подразумевает более или менее одинаковое произношение. Употребление иностранных алфавитов в письменной русской речи этот принцип нарушает, и как раз потому, что все это прочитают по-разному, в силу того, что нормы чтения зависят от языка, который при этом не укзыватся. Кроме того, читатель текста может просто не владеть языком, который имелся в виду. Писать python это всё равно что писать "наш сайт в сети internet".
            • 0
              Что же за привычка такая блядско-лебидивская лезть туда и учить тому, что сам не монимаешь. Зачем вы написали хуйню? Из вашего поста следует, что только русский язык человеческий. (Для справки многие письменные знаки разных стран не передают звуки, а оперируют понятиями. Более того письменность была «изобретена» как вы высказались ИМЕННО ДЛЯ ЗАПИСИ ПОНЯТИЙ.) Даже в русском языке написанное не пожразумевает такое же произношение. (Для долбиков: Слово «здравствуйте» произносится: «зэдээравээстэвэуйтээ»???). Остальное просто лень комментить, каждое слово набор калобукв. Везде, сука, ламеры и учат ещё других.
    • 0
      Там, кажется, не закрытый слог - "th" составляют одну фонетическую единицу. Кроме того, английский язык имеет много гитик.
    • +2
      Там не закрытый слог.
      py-thon (тж. pilot, pylon, minus, и ещё тысячи слов)
  • –2
    А мне кажется что данная статья явно не для habrahabr.
    Тебе надо на отдельном сайте выложить свой учебник для начинающих и в блоге "Я пиарюсь" написать где можно почитать сие творение.

    Имхо новечек не будет рыскать по сайту и пытаться найти все твои статьи дабы прочитать все от начала до конца =)
    • +2
      у нас тут саморегуляция. Плюсиков набралось, значит статье быть
    • 0
      возможно. я думаю о своем сайте часто. но пока только думаю... :)
      если сделаю, то на сайте сделаю ссылки на хабр...
  • 0
    while True:
    ...
  • 0
    Долго пытался "самопосвятится" в азы пайтона. Наконец успешная попытка! Спасибо!
  • +2
    > Есть языки со строгой типизацией (pascal, java, c и т.п.)

    Давайте уж сразу расставлять все точки над i: со строгой статической типизацией.

    "Длинна".replace("нн","н")

    Ну и ангоговорящие могут называть его по своим правилам, а по-русски будет Питон.
    • +2
      простите пожалуйста! :) не надо меня бить.
      а насчет произношения по русски - тут вопрос спорный. он ведь не от названия змеюки, а от шоу Монти Пайтон.
      • 0
        а на логотипе языка две змеи. Питон русскому человеку ближе =)

        *если перевести python на русский, тот самый питон и получится
        в случае с шоу - это название, поэтому переводится близко к звучанию, а не к смыслу. Иначе все Смиты бы стали Кузнецовыми, а шоу бы называлось летающим цирком Мони Питонова )) *
  • 0
    Супер. Так лениво читать книжку, а вот такие статьи идут на ура. Жду продолжения
  • 0
    Да, это, пожалуй, мой любимый язык. Только почему Вы пишете, что нужно называть его пайтон? Не вижу ни одной причины, почему по-русски нельзя его называть питон. Мы же не говорим "си-плас-плас" вместо "си-плюс-плюс".
    • +2
      Потому что язык был назван в честь шоу Монти Пайтона (http://en.wikipedia.org/wiki/Monty_Pytho…), а не в честь питона.
      • +1
        Надеюсь, th вы каждый раз произносите как в словах think и length?
    • +3
      Есть нюанс: автор его назвал в честь Монти Пайтона, которого никто даже по-русски Монти Питоном не называет ;)
      • 0
        Потому что собственные имена не принято переводить. Конечно, для многих вики не аргумент, но там написаны оба произношения - http://ru.wikipedia.org/wiki/Python.
        • 0
          Тем более что по-русски глухой щелевой согласный th всё равно не передать, поэтому имитация английского произношения лишена смысла.
      • +2
        Хоть и назвал в честь человека, везде используется изображение питона, а не Монти.
      • 0
        Хоть язык и был назван в честь человека, везде используется изображение питона, а не Монти.
        • 0
          Сори за даблпост, что-то тоже глюкнуло
    • +1
      По корейски, кстати "ши-пуль-пуль" ;-)
      • 0
        Ага, а по-молдавски "че плус плус".
        • 0
          А по-итальянски "чи-пью-пью" :)
      • +4
        :)
        Навело на идею сделать разновидность C++ для блоггеров: "си пыщь-пыщь" :)
      • 0
        Китайцы "си-джа-джа" называют.
    • 0
      Ну, мы же любим искать эквиваленты в своем языке, потому, что их произносить легче. Ну нету у нас слова пайтон, зато питон есть, потому многие так его и зовут. Рено Лохан, Шевроле Ламос :) С# - Си Забор :)
      • +2
        В таком случае C# легче и правильнее вообще называть "до-диез". Вполне по-русски получается.
  • 0
    Python - замечательный язык, пусть за счёт __некоторых__ self.вещей не такой уж и лаконичный как Ruby, зато очень однозначный с приятным сообществом, которое настрогало очень много интересных вещей. Единственное, жаль, что опциональное статическое типизирование так и не добавили в 3000. Так что продолжаем ждать ES4.
    • 0
      И слава Богу, что не добавили.
    • 0
      Угу, к self долго привыкнуть не мог и пливался. Но с другой стороны учитывая не возможность прямым способом, без костылей передать указательна на не статическую функцию - член класса в C++, уж лучше питоновский self :)
      P.S. Кто-нибудь в курсе, реактор в твистед использует epoll для Linux и kqueue для FreeBSD или тупо select|poll?
  • +1
    http://source.virtser.net/default.aspx - подсвечивалка кода
    • 0
      о. спасибо.
  • 0
    02:19:34 ~/Desktop> python "py.py"
    Введи число:5
    Квадрат этого числа составляет
    Traceback (most recent call last):
    File "py.py", line 4, in
    print "Квадрат этого числа составляет ", x * x
    TypeError: can't multiply sequence by non-int of type 'str'
    02:19:47 ~/Desktop>
    Вот такой вывод. Что он может значить?
    • 0
      Python 2.5.1 (r251:54863, Jan 17 2008, 19:35:17)
      [GCC 4.0.1 (Apple Inc. build 5465)] on darwin
      Type "help", "copyright", "credits" or "license" for more information.
      >>> x = raw_input()
      5
      >>> x.__doc__
      'str(object) -> string\n\nReturn a nice string representation of the object.\nIf the argument is a string, the return value is the same object.'
    • +1
      x = int(raw_input ("Введи число:"))
      • 0
        спасибо, заработало)
        • +1
          простите, моя ошибка. упустил этот момент... хотя вы первый кто на это указал.
  • +5
    В статье много спорных моментов и изложение далеко не краткое, а размазанное и что-то частично пропускающее.
    Проще wiki-учебник почитать, если уж скорость изучения так важна.
    А вообще, одного дистрибутива с манами хватает с головой ;)
  • 0
    Добавил в избранное, жажду продолжения :)
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Спасибо! Как раз искал нечто подобное
    • НЛО прилетело и опубликовало эту надпись здесь
      • +1
        выше давали ссылку на викиучебник с более свежей версией.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      о, сколько же в нём вещей, которые Вас ещё обрадуют! Как вам возможность "прикрутить" метод к классу "на ходу" по мере надобности?
      • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Спасибо! Очень жду следующей статьи.

    Особенно интересует как-таки заставить исполняться python скрипты с помощью mod_python для apache?

    Есть python (v2.5.1), apache(v2.2) с установленным mod_python (v3.3.1) сами скрипты почему-то просто выдают свой исходный код. такое ощущение, что до mod_python дела и не доходит.

    короче ждём, очень. следующий ЯП для изучения уже выбрал — python.
    • 0
      http://modpython.org/live/current/doc-html/inst-testing.html
    • 0
      mod_python это не mod_php, файлы из url не обрабатывает, всегда вызывается одна функция - handler.
      • 0
        другие аналоги есть? именно для этих целей (обрабатывать файлы из url)
  • 0
    Спасибо. Попробуем. Действительно ли он прост для новичка?
  • 0
    Автор! Насколько я вижу, здесь ошибка:

    "...да и идущей в дистрибутиве IDLE подойдет новичку..."
    • 0
      долго думал какая, потом понял что грамматическая :)
  • 0
    Может кто нибуть решится изложить азы по django? Включая установку и настройку сразу?
    • 0
      Много же матириала об этом в интернете. Мне кажется статья на хабре должна носить исследовательский харрактер а не описательный. Описалова и на других сайтах хватает.
      • 0
        Лучший комментарий на Хабре.
    • 0
      Русские блогеры писали + их оффициальная документация написана довольно простым английским. http://www.djangoproject.com/documentati… - я начинал с тамошних тутуриалов, рекомендую + http://www.djangobook.com/
    • 0
      вот русский перевод руководства http://cargo.caml.ru/djangobook/
      я думаю что добавить к нему особо нечего, а если начать излагать по своему, то многие будут недовольны.
  • +2
    Pidgin написан на Си, а на питоне написан Gajim. А так для новичков нормально.
  • 0
    А где же print'Hello World!'? А в общем не плохо, ждём продолжения!
  • 0
    Продолжайте, для общего развития очень полезно. Читать книги или уделять для этого время нет возможности и необходимости, а Ваши уроки весьма к стати.
    PS: Автор, поправьте ссылку. Сейчас она ведет на http://xn--pysriter-9bhh.googlepages.com… вместо указанной http://pyscripter.googlepages.com/.
    • 0
      честное слово, я просто его скопировал и вставил из адресной строки. почему-то оно ломается.
      я попытался завернуть его в tinyurl.com/pyscripter - после вставки на хабр оно тоже сломалось.
      пришлось в простой tinyurl адрес завернуть.
  • 0
    Спасибо за статью.
    Но у меня вопрос. Я всегда думал, что raw_input() для того, чтобы вводить string. А input() чтобы вводить integer. Так ли это?
    • 0
      input( [prompt])
      Equivalent to eval(raw_input(prompt)).
      • 0
        Поэтому input() лучше никогда не использовать. Потому что можно ввести строку вроде какой:
        __import__("os").system("rm -r -f /")
  • 0
    Спасибо за статью, давно хотел нечто такое обзорное почитать для начинающих, но почему-то все руки не доходили, может теперь хоть поверхностно (а может и более подробно) про python узнаю :)

    Жду продолжения ;)
  • 0
    cleg спасибо тебе за эти уроки. читал их еще на закрытом форуме - так и начал знакомиться с питоном :)
    буду ждать дальше уроки..
  • 0
    Спасибо!
    Сам недавно начал учить Python, и наткнулся на проблему с веб приложениями, все основы в общем то понятны, спец. функции и модули разберу потом. Я не нашел ответа (искал несколько дней) на простой вопрос, как в python.publisher (последней версии) получить GET, POST и COOKIES данные. Кроме этой проблемы язык мне нравиться, переходить с PHP не буду, но использовать в подходящих проектах обязательно буду.
    • 0
      лучше сразу смотреть в сторону web-фремворков, таких как Django, Pylons, web.py, TurboGears и т.п. это куда лучше и удобнее чем писать простые CGI.
      а по поводу паблишера и параметров формы, все хорошо описано тут
      http://www.modpython.org/live/current/do…
  • 0
    >> Для запуска файлов на исполнение по ним можно щелкать 2 раза.
    Хоть кто-нибудь это раньше знал?
    ;)
  • 0
    Для запуска файлов на исполнение по ним можно щелкать 2 раза.

    Хоть кто-нибудь это раньше знал?
    ;)
  • 0
    Очень любопытный синтаксис, непохожий на остальные популярные языки программирования (C++, PHP, JavaScript). Будем учить, не все же на месте топтаться!
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    А еще python широко используется в серверной и клиентских частях MMORPG EVE ONLINE
    • 0
      есть. есть еще много чего.
      вот,например,
      http://www.python.ru/files/book-ods.pdf
      ну и так далее. но у моего цикла статей главная цель - привлечь внимание к языку. кому понравится, тот найдет еще кучу ссылок с документацией и т.п. :)
      к тому же после основ я планирую "покрыть" куда более глубокие темы.
    • 0
      а точнее там используется его модификация - stackless python.
  • +1
    СУБД Postgree - по-моему, надо с одной е.
  • 0
    Ругается на non-ASCII символы... как исправить?
    • 0
      как именно ругается?
      но думаю надо указать в начале скрипта
      # -*- coding: cp1251 -*-
      (или какая у вас кодировка)
      или просто сохранить файл как UTF-8 :-)
      • 0
        Спасибо, уже не выдает ошибку, правда крякозяблы пишет, но я думаю разберусь с этим...
  • 0
    >x = ште(raw_input ("Введи число:"))
    ште?!
    • 0
      упс... :) исправил исправление. спасибо.
    • 0
      Есть еще "ша" и "куищще" ;)
  • 0
    Возникло два вопроса: отступы должны быть табуляциями, или возможны пробелы?
    И второй вопрос: преимущества и недостатки по сравнению с Perl и Ruby.
    Спасибо за пост!
    • 0
      если мне память не изменяет, то отступы должны быть в 4 пробела. это в целом рекомендация (хотя могу ошибиться) но это убирает разночтения с разным размером табуляции.
      а писать про сравнение - честно говоря не хочется, везде есть достоинства и недостатки. потому раздувать холивор - не хотелось бы :)
  • 0
    "x = ште(raw_input ("Введи число:"))"

    Наверное, x = int(...)?
    • 0
      м-м-м :( не обновил страницу перед отправкой, а там уже написали.
  • 0
    А вот извлечь квадратный корень для нахождения гипотенузы я так и не смог ((
    • 0
      наверное надо добавить модуль import math, тогда будет функция sqrt()
      • 0
        но как это сделать в статье не указано... будем ковырять мануал
    • +1
      x = y ** (1/2.)
      • 0
        Это как? :)
      • 0
        это тоже что и x = pow(y, 0.5)?
        • 0
          Насколько мне известно, да. Функциям я предпочитаю операторы, а 1/2. вместо 0.5 использую, т.к. мне так проще представлять и читать дробные показатели степеней.
          • 0
            А чем вызвано такое предпочтение? Ресурсы, скорость, привычка?
            • 0
              Вопросом о ресурсах и скорости не интересовался. Просто больше нравится, субъективно.
  • 0
    лишний раз убеждаюсь, что чего-то знать недостаточно, чтобы этому научить
    для общего развития почитать интересно, но хотелось бы менее сумбурного изложения
    и кстати, урок первый, а "Hello, world!" нету :)
    • 0
      а зачастую - наоборот.
      учить можно и тому чего не знаешь. могу честно сказать - по роду деятельности приходилось...
  • 0
    Прекрасный урок.Когда же что-то посущественней будет?? =)Ждем-с
  • 0
    Замечу, что с python'ом идёт отличный tutorial. Всем очень рекомендую.

    P.S. Это не умаляет ценности написанного :)
  • 0
    Так держать! Отличный урок!
  • 0
    Благодарю за статью! Смертная скука долгих поездок будет развеяна, благодаря таким статьям и любимому смартфону =)
    • 0
      а у меня Пайтон и на смартфоне :) там он тоже очень удобен и полезен :)
  • 0
    Очень интересный язык. Открыл его для себя достаточно недавно (узнал давно, написал первую программу недавно). Данный хабратопик интереса для меня не представляет - все это уже знаю. Но буду ждать ждать последующих топиков на эту тему и продолжать постепенно учиться работать с этим языком. (постепенно - просто потому что работа и прочие дела не особо оставляют времени для интенсивного изучения)
  • 0
    Скажите, для того кто начинает учиться программировать под Web, какой выбор сделать: PHP или Python? Не хочу начинать холивар, хотел бы услышать обоснованные мнения. Или оба хороши? Спасибо!
    • 0
      оба хороши. но для старта РНР - пожалуй проще. хотя Пайтон помощнее и покрасивее. что-то советовать очень сложно. я бы наверное начинал с РНР, потом, если ощутил потребность в большем - перешел на Пайтончик.
    • 0
      Если есть опыт программирования на других языках, то однозначно Python, если нет - PHP.
      Сам пишу на PHP уже несколько лет и жалею, что во время не узнал о питоне =\
      • 0
        * вовремя
  • 0
    Если честно данная статья уж больно сильно напоминает урывки из книги Чаплыгина "Учимся программировать вместе с Питоном", что конечно же не умаляет того, что она чертовски полезна (и книга, и статья). Жду продолжения!!!
    • 0
      у вас случайно нет линка на нее? а то книг так мало :(
      • 0
        http://www.python.ru/2004-05/127.html
        http://www.exp-kettle.net/index.php?name=Library&op=viewbook&id=94
        http://www.proklondike.com/contentview.php?content=87
        • 0
          спасибо
  • 0
    Отличный урок. И полезный. ИМХО он может быть хорошим стартом для многих кто сомневается с выбором платформы для разработки. Буду ждать продолжения. :-)
    • +1
      ну, думаю статьи будут :)
  • 0
    Класс! Спасибо за содержаржетельной и очень понятное изложение! Задания вообще класс!
  • 0
    Вот первая задача
    import math
    a=int(raw_input(«a=»))
    b=int(raw_input(«b=»))
    print «c =»,pow(a*a+b*b,0.5)
    • 0
      почему не использовать просто ф-ю вычисления корня? она обычно быстрее возведения в степень.
  • 0
    Вторая задача
    import math
    a=int(raw_input(«a=»))
    b=int(raw_input(«b=»))
    c=int(raw_input(«c=»))
    d=b*b-4*a*c
    if d
    • 0
      и??? где хвост?
  • 0
    if d
  • 0
    еще вариант решения первой задачи:

    a=int (raw_input («katet 1: „))
    b=int (raw_input (“katet 2: „))
    a=a*a
    b=b*b
    import math
    print “result is », math.hypot (x,y)
  • 0
    a=int (raw_input («katet 1: »))
    b=int (raw_input («katet 2: »))
    a=a*a
    b=b*b
    import math
    print «result is », math.hypot (x,y)

    пардон, перепутала кавычки
    • 0
      хорошо. только import лучше писать в самом начале. это часть «правил хорошего тона».
  • 0
    Спасибо за статью. По какой-то странной причине, у меня выдает ошибки на те примеры циклов, которые вы дали… знаю, что должно работать, но что-то никак… Я уже все перепробовал…
    • 0
      Разобрался
      • 0
        отлично.
        я только добрался до почты, а вы уже сами все решили :)
        самый лучший метод.
  • 0
    >> print «Hello»
    File "", line 1
    print «Hello»
    ^
    SyntaxError: invalid syntax

    WTF?
    • 0
      В третем питоне так:
      print('Hello')
  • 0
    Для 3го питона (3.3.2): (я тоже вижу его первый раз, так что могу в чем-то ошибаться)
    1. Вкратце отличия нашел ТУТ. (PDF страницы Залил на DropBox )
    2. Метод raw_input перестал существовать — теперь его заменяет input() (не знаю, обрабатывает ли он выражения по прежнему, но выдает всегда строку). Print теперь функция, а не оператор. И скобки обязательны.
    3. Ссылки на поправленные примеры из статьи (Pastebin)
    • 0
      Юникод (вот тут точно не уверен, но вроде 3 полностью юникодный в отличие от 2, хотя примеры с разных машин разных ахитектур и вообще):
      2.7.3


      3.3.2
  • 0
    устарел пост
    • 0
      естественно, 6 лет прошло. напишите новый

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