LINUX.ORG.RU

Как правильно учить Python?

 ,


1

1

Люди, подскажите пожалуйста хорошие учебники по Python. 2й день не могу найти хорошего руководства по Python, нет, возможно проблема во мне, но... Везде по учебникам идет обучение через Python Shell, а я совсем не понимаю зачем это нужно? если я хочу писать скрипты, то этого я не сделаю через шелл этот. Если я буду интересоваться криптографией и прочим то и тут мне тоже шелл не поможет. Хочу писать через блокнот(ну или через что-то поудобнее) непосредственно код, но нигде даже нормальных примеров такому обучению не дается. Почему так? В итоге я в данный момент написал легкий скриптовый автокликкер на питоне, очень просто и быстро кстати, а написать программу которая будет вычислять:

a = raw_input("a")
b = raw_input("b")
c = a+b
print c
не могу, не найду учебника в котором бы было нормально описано как присвоить тип переменной.

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

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

Я тебе несколько кинул в личку.

anonymous
()

Ты все правильно написал, но нужно учесть что в переменных a и b могут быть не только числовые значения.

XoFfiCEr ★★☆☆
()

мне тоже шелл не поможет

Почему не поможет? Используйте IDLE — стандартную IDE, там одновременно и шелл, и редактор текстов.

buddhist ★★★★★
()
Последнее исправление: buddhist (всего исправлений: 1)

В переменных a и b должны быть значения одного типа: если это числа то будет сложение, если это string то будет конкатенация.

XoFfiCEr ★★☆☆
()

a = raw_input(«a»)
b = raw_input(«b»)
c = a+b
print c

Нужно сначала сконвертировать а и b в числа, если вы хотите сделать сложение чисел. Иначе это будет конкатенация строк.

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

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

buddhist ★★★★★
()
Последнее исправление: buddhist (всего исправлений: 1)

если я хочу писать скрипты, то этого я не сделаю через шелл этот

Все, что можно писать в Python Shell, можно писать и в скрипте // и.о. КО

Читай официальный туториал, читай Dive Into Python, читай документацию к стандартной библиотеке и справочник Бизли.

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

Это уже близко к клиническому случаю. Так сложно посмотреть в документации, что именно возвращает raw_input и как сконвертировать строковое представление числа? Сумма строк — это не сумма чисел (Гусары^W Перлофаги, молчать!)

>>> a = float(raw_input('a: '))
a: 42
>>> b = float(raw_input('b: '))
b: 1e-5
>>> c = a + b
>>> print c
42.00001
>>> 
theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

Возможно и клинический случай. Но я взял это за пример, т.к.

a = float(raw_input('a: '))
там где я начал изучать язык не было описано конвертации переменной в число:

Так сложно посмотреть в документации, что именно возвращает raw_input и как сконвертировать строковое представление числа? Сумма строк — это не сумма чисел

А то что это сумма строк была - я как-то и так догадался, когда «с» стало равно 12 а не 3м %)

Я говорю про учебники, нормальные учебники в которых не нужно читать документации на каждом «уроке».

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

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

Спасибо большое )

xandr24
() автор топика
Ответ на: комментарий от xandr24

А то что это сумма строк была - я как-то и так догадался, когда «с» стало равно 12 а не 3м %)

Вот поэтому то я и не люблю динамическую типизацию. Конец результат немного не предсказуем.

XoFfiCEr ★★☆☆
()

Learn Python The Hard Way

сабж

init_6 ★★★★★
()

на курсере скоро новые курсы по питону. Запишись.

Shtsh ★★★★
()

Сначала Марк Лутц «Изучаем Python», 4-е издание, затем его же «Программирование на Python», 4-е издание, в двух томах. Там всё очень подробно и понятно расписано, упражнения присутствуют, читается легко и занятно.

eugeno ★★★★★
()

даже если эту проблему решу(её то в принципе быстро решить можно), то в дальнейшем будут задачи труднее. Хотелось бы услышать ваш совет, как лучше мне познакомиться с Python

Не учить python. И вообще не начинать обучение программированию с динамически-типизированных, мультипарадигмальных языков. От них будет только каша в голове — куча выученных умных слов, без намёка на фундаментальные знания предмета, на которым вы собственно будете программировать (регистры, память, адреса, бинарная арифметика).

Начинать нужно с простого, с обычного Си (не С++, а с чистого Си!). И им же можно и заканчивать. :-)

А для скриптинга и изучения ООП взять Ruby, благо оно прямее будет. Но всё это эдак года через два активного программирования на С, а до этого никаких питонов и руби не трогать, даже не смотреть в их сторону.

hexdump01010101
()
Ответ на: комментарий от anonymous

Знание базовых вещей (которые я и посоветовал) уже говорит о какой-то «илитарности»? Вот и наступило «счастливое будущее»... :-(

Хотя польщен, чего уж скрывать. (Изначально я еще хотел ассемблер посоветовать, но решил, что в процессе и так до этого доберется. :-)

hexdump01010101
()
Ответ на: комментарий от hexdump01010101

Хотя польщен, чего уж скрывать.

Ты ведь понимаешь, что «илитист» не было комплиментом?

Знание базовых вещей (которые я и посоветовал)

Это не базовые вещи, это ненужных хлам, который никак не помогает типичному питонокодеру.

anonymous
()
Ответ на: комментарий от hexdump01010101

Тут судя по упортости ТС не стоит ставить его на истинный путь. Так отчасти согласен, что С, С++, Pascal, действительно, те языки с которых стоит начинать. Интересно было бы посмотреть начинания с haskell, когда мозг ещё не отравлен(ли?), в нём хорошо, что большинство ошибок ловятся на compile time.

anonymous
()
Ответ на: комментарий от XoFfiCEr

>не предсказуем

Там же строгая типизация. Не так уж всё плохо.

Deleted
()
Ответ на: комментарий от wwwsevolod

Книга как мотиватор разве что.

anonymous
()
Ответ на: комментарий от anonymous

Интересно было бы посмотреть начинания с haskell

Если математик-теоретик, то будет польза, наверное. :-) Хаскель позиционируется как «математика на стероидах», и мне лично этот подход очень импонирует. Но в реальных программах на хаскеле столько нагромождения do-нотаций, что в общем-то всё скатывается к императивщине, вписанной в функциональную парадигму, а сам код состоит из нагромождения знаков пунктуации. Хотя и не спорю, что может к этому можно привыкнуть — вон некоторые и иероглифы читают. Просто особо не вижу смысла, когда другие языки позволяют писать в том же функциональном стиле, но понятнее (за счет более многословного и менее засахаренного синтаксиса, что является скорее плюсом).

Но я ни разу не специалист по хаскелу, так... любитель. Так что мои слова можно делить на два или на три. ;-)

hexdump01010101
()

http://docs.python.org/py3k/ , как абсолютно справедливо заметили ещё в самом первом комменте. там есть всё, и справочники и учебники (туториалы) и описание api

редактор: eclipse + pydev — будет достаточно

шелл: ipython — таки очень удобен и полезен

алсо:
pydoc3 --help
pydoc3 -b

AGUtilities ★★★
()
Последнее исправление: AGUtilities (всего исправлений: 1)
Ответ на: комментарий от AGUtilities

редактор: emacs + ropemacs — будет достаточно
редактор: st2 + sublimerope — будет достаточно
редактор: st2 + sublimecodeintel — будет достаточно

Поправлено.

anonymous
()
Ответ на: комментарий от anonymous

для пианистов.

словно что-то плохое

anonymous
()
Ответ на: комментарий от hexdump01010101

А для скриптинга и изучения ООП взять Ruby, благо оно прямее будет.


оно


Ну, это смотря как покакаешь.

Virtuos86 ★★★★★
()

Писать код. По ходу возникающих вопросов -> google, stackoverflow, python.su. А с абстрактными вопросами для флейма заходи сюда :)

alienclaster ★★★
()
Ответ на: комментарий от hexdump01010101

Да, do блоки расстраивают.

другие языки позволяют писать в том же функциональном стиле

Есть пользователь ЛОРа, который вроде разбирается в данной теме, и он советовал(говорил) про F#.
Призываю аватарку с древнегреческим войном.

anonymous
()

спасибо.

Ой, спасибо всем ) За Лутц`а конкретно тоже спс, читаю сейчас. Правда первые страниц 50 с трудом осилил, там обобщенно идет описание питона, и его пропаганда ) Но все-же решил не пропускать этот материал. В общем-то почитал отзывы о книге, хорошую вещь мне посоветовали, спасибо, надеюсь прибавит мозгов :3

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

2 hexdump01010101: ну у меня тут сложный выбор. Конечно учить С это круто, да и знать ассемблер это очень хорошо, но у меня немного другая задача, речь идет о трудоустройстве, и сроки поджимают. Если я смогу осилить эту книгу + 2 тома «Программирование на Python» за пол года, то думаю смогу устроится джуниором на какие-нибудь 400-500$. На изучение С у меня уйдет гораздо больше времени, а у меня сроки подгорают, да и мне уже 24, нужна работа. После окончания своего универа я год проработал сис.админом, теперь уже желания работать на этой должности у меня отпало(общаться с менеджерами которые не понимают ничего-совсем портит картину, и (в следствии) работа эникей совсем не радует). + сам подрабатывал на создании простых сайтов на CMS, где немного практиковался с PHP, HTML, CSS, даже немного JS, но и это тоже меня не впечатлило.

Есть перспектива ходить на курсы Java(с начала нового года) с последующим трудоустройством (там даже за хорошие результаты могут платить деньги), но после майнкрафта который подгружает мой i7 на полную - нет особого желания. Боюсь я Java.

Знаю, толкового программиста с меня сейчас не выйдет, но даже если придется работать сис.админом и дальше - то Python мне будет кстати.

ах да, на https://www.coursera.org/course/interactivepython я подписался, буду ожидать теперь, заодно и подготовлюсь.

Спасибо вам за годные советы, спс что посоветовали лучшее :) Думаю что это мне гораздо облегчит жизнь, и думаю что мы не прощаемся, мне кажется я тут часто буду с вопросами. Спасибо ^^

xandr24
() автор топика
Ответ на: спасибо. от xandr24

у меня немного другая задача, речь идет о трудоустройстве, и сроки поджимают. Если я смогу осилить эту книгу + 2 тома «Программирование на Python» за пол года, то думаю смогу устроится джуниором на какие-нибудь 400-500$

ОК, тогда становится понятней, и начинание вроде хорошее. Только непонятно, почему не продолжить углубляться в PHP/JS/XML, если ради денег? Вы сказали, что вас это не впечатлило, но я что-то сомневаюсь, что вас впечатлит Python в таком случае.

Предложения работы на PHP много больше (+всегда возможность фриланса), а хорошие спецы получают хорошие деньги даже за PHP. Думаю даже на фрилансе 400$-500$ не особая проблема получать (хотя и тут я не специалист, рад буду услышать истории успеха). Хотя, безусловно, знание Python даст конкурентные преимущества, и ваши усилия не будут напрасны в любом случае.

Ну а если для саморазвития, я бы остался при своём: учить что-нибудь фундаментальное (C, asm), или маргинальное (Haskell), или просто лучших в своём классе (например в случае ООП/скриптинга — Ruby), а не середнячков как Python или PHP.

hexdump01010101
()
Ответ на: спасибо. от xandr24

Если я смогу осилить эту книгу + 2 тома «Программирование на Python» за пол года, то думаю смогу устроится джуниором на какие-нибудь 400-500$.

Это печально. Полгода на изучение питона, и хотеть при этом 500 баксов.

anonymous
()
Ответ на: комментарий от anonymous

Почему печально?

Я просто не хочу устраиваться на работу без хороших базовых знаний. Да и тратить то я буду не по пять часов в день на изучение. Буду реалистом, тратить буду от 5 и до 20 часов в неделю(мои расчеты и надежды, надеюсь так и будет).

Живу я не в Москве, а в Харькове. У нас тут людям без опыта работы где-то так и платят. Друг(красный диплом) получает 600-700$ за коддинг на PHP, при опыте работы около 2х лет. У нас очень большой выход «специалистов» и людей без опыта берут обычно подешевле, да и сам я скромный. Админом я работал за 320$ без стажа(1 сервер керио(вин)+1сервер терминал(win2008)+ ~50 машин), такие дела.

2 hexdump01010101: а скучно с одним браузером работать просто, работа же должна и удовольствие приносить хоть немного, и пользу. В последнее время и так кроме браузера в своей жизни ничего не вижу ) (вру, еще огород, стройка дома и девушка :) но это уже личное ^^)

xandr24
() автор топика
Ответ на: комментарий от xandr24

а скучно с одним браузером работать просто

Так ведь получается шило на мыло. Ушли от PHP, чтобы уйти от веба, а пришли к Python'у и тому же вебу. Посмотрите на вакансии тут вот в разделе Job, больше 90% будет веб-программирование (я пролистал 3 первые страницы, и там было 100% вакансий связанных с вебом/django, так что 90% это я так, в качестве утешения).

Ну еще если QA-инженером каким-нибудь захотите поработать, то да, python там ценят, так как можно быстро «налабать» тест-кейсик.

А в основном у питона ниша тот же самый веб.

Вот вы писали:

Если я буду интересоваться криптографией и прочим

Тогда вам точно нужен не питон, а как раз C для реализации, Haskell для прототипов и математической наглядности.

вру, еще огород, стройка дома и девушка :)

Пропаганда и выпячивание, я протестую. ;-)

hexdump01010101
()

если я хочу писать скрипты

Ноултон, «Python для системных администраторов»
а если хочешь веб, то «Уэсли Чан, Пол Биссекс, Джеффри Форсье - Django. Разработка веб-приложений на Python». Это чоткие и конкретные книжки если хочется побыстрее взять и кодить.

Komintern ★★★★★
()
Последнее исправление: Komintern (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.