[python] Подскажите пособие для начинающего
Собственно вопрос: что можно хорошего почитать учащего программированию с нуля на питоне? Писать я собираюсь только под линухом так что учебник начинающийся фразой "установите майкрософт визуал студию" (или что-нить в таком духе) не покатит.питон для дотнета, конечно, тоже есть, но не думаю, что это то, что ты хочешь
код писать можешь в любом текстовом редакторе, ide есть в том же эклипсе;
ссылки на учебники для начинающих программировать есть у них на сайте.
Собственно вопрос: что можно хорошего почитать учащего программированию с нуля на питоне?Dive into python (есть русский перевод)
Хорошая книга — научишься писать алгоритмы. Правда о возможности ее найти в печатном виде информации не имею.
В печатном виде купить не должно быть проблемой — видел в книжном магазине, не помню в каком, в прошлом году. И на том же Озоне в продаже.
Dive into python (есть русский перевод)работает хорошо только на тех, кто до этого уже программировал.
Если автор ни разу не программировал до того - то нужно посмотреть паскаль хоть в минимальном виде: простейшие алгоритмы, вроде определения типа треугольника по сторонам, простые алгоритмы, стандратные алгоритмы (динамическое программирование - задача рюкзака, теория чисел - подсчёт количества различных делителей, алгоритм на графы - выделение областей связности, какое-нибудь сбалансированное дерево, быстрая сортировка и вставками, длинная арифметика - логарифмический подсчёт числа фиббоначи). Ну или можно кормана на паскале прорешать. Не то, чтобы это было непосредственно нужно на практике, эти задачи скорее помогают понять общие принципы алгоритмизации. А паскаль для этого подходит лучше всего: там нет ничего лишнего и неоднозначного, с другой стороны в нём можно сразу работать, не осваивая концепцию библиотек, плюс он не скрывает детали организации алгоритма, на питоне-то можно и быстрее написать те же самые задачи, но понимать как и почему они работают будет лишь тот, кто предварительно их освоил в более примитивном окружении.
А потом можно и нужно изучать конкретные полезные языки, питон вполне хорошо подходит: универсальный и мощный.
простейшие алгоритмы, вроде определения типа треугольника по сторонамомг, омг
предложи свой пример
Как и всегда посоветую ШеняСпасибо, да. Бумажный вариант меня как раз не волнует. Не читаю с бумаги.
Хорошая книга — научишься писать алгоритмы. Правда о возможности ее найти в печатном виде информации не имею.
Dive into python (есть русский перевод)Ваще-то есть туториал.
public class TriangleTest{
public static final int RANDOM_OR_NONEXIST = 0;
public static final int EQUILATERAL = 1;
public static final int ISOSCELES = 2;
public static final int RIGHT = 3;
public static int getTriangleType(int a, int b, int c){
if(a == b && a == c)return EQUILATERAL;
else ifa == b && a != c) || (b == c && b != a) || (a == c && a != breturn ISOSCELES;
else if(a*a + b*b == c*c || b*b + c*c == a*a || a*a + c*c == b*b)return RIGHT;
return RANDOM_OR_NONEXIST;
}
public static void main(String[] args){
if(args.length < 3)System.err.println("not enough parameters!");
else{
int a = Integer.valueOf(args[0]).intValue;
int b = Integer.valueOf(args[1]).intValue;
int c = Integer.valueOf(args[2]).intValue;
System.out.println("triangle type: "+getTriangleType(a, b, c;
}
}
}
все ок, мне можно переходить к теории чисел?
Как минимум, никто не мешает треугольнику быть одновременно прямоугольным и равнобедренным.
ладно, вот так например можно:
public class TriangleTest{
public static final int RANDOM_OR_NONEXIST = 1;
public static final int EQUILATERAL = 2;
public static final int ISOSCELES = 4;
public static final int RIGHT = 8;
public static int getTriangleType(int a, int b, int c){
int result = 0;
if(a == b && a == c)result = result | EQUILATERAL;
else ifa == b && a != c) || (b == c && b != a) || (a == c && a != bresult = result | ISOSCELES;
else if(a*a + b*b == c*c || b*b + c*c == a*a || a*a + c*c == b*b)result = result | RIGHT;
else result = result | RANDOM_OR_NONEXIST;
return result;
}
public static void main(String[] args){
if(args.length < 3)System.err.println("not enough parameters!");
else{
int a = Integer.valueOf(args[0]).intValue;
int b = Integer.valueOf(args[1]).intValue;
int c = Integer.valueOf(args[2]).intValue;
int result = getTriangleType(a, b, c);
System.out.println("triangle type: "+(result & RANDOM_OR_NONEXIST;
System.out.println("triangle type: "+(result & EQUILATERAL;
System.out.println("triangle type: "+(result & ISOSCELES;
System.out.println("triangle type: "+(result & RIGHT;
}
}
}
правда, вывод не причесал нормально.
в рациональных числах?А, у тебя там инты.
Я, честно говоря, не вчитывался.
Во-первых, есть лишние сравнения (которые в elseif). Уж такой мизерный пример можно было автоматизировать. От учеников это требуют по двум причинам 1) сразу учиться писать оптимальный код 2) научиться строить сложные деревья условий
Это с точки зрения критики стиля написания. А так - задача не работает вовсе. Нет обработки тупоугольный/остроугольный, нет проверки на неравенство треугольника, нет проверки на положительность сторон.
какие там сравнения лишние?
какие там сравнения лишние?(a == b && a != c)
непонятно, почему это сравнение лишнее
непонятно, почему это сравнение лишнеевнимательно изучи текст над той строчкой, подумай, как будет происходить выполнение в различных случаях (как вариант, "выполни" этот кусок кода на бумажке может догадаешься.
Как и всегда посоветую ШеняКто-нибудь его видел не в уёбищном пдф, который я на нетбуке запарился читать?
Кто-нибудь его видел не в уёбищном пдф, который я на нетбуке запарился читать?Возьми тех, да пересобери как нравится. http://www.mccme.ru/free-books/
спасибо - да.
Оставить комментарий
YUAL
И так я таки понял что отмазаться не получится и решил что надо научиться программировать. Хотя бы чисто чтбы иметь возможность писать нужные себе программы или модифицировать имеющиеся под себя.После прочтения нескольких срачей на предмет Pascal vs Что-нибудь-ещё, решил останновиться на питоне. Он вроде не сильно сложный и на нём достаточно много опенсорсного софта. Ранее писал чё-то примитивное на qbasic, достаточно много скриптов для ультимы на бэсико-подобном скриптовом языке, подгонял готовые решения примитивных задач на C под нужные условия (сосед на втором курсе почвы учился ну и правка опять же готовых скриптов на перле под свои нужды.
Собственно вопрос: что можно хорошего почитать учащего программированию с нуля на питоне? Писать я собираюсь только под линухом так что учебник начинающийся фразой "установите майкрософт визуал студию" (или что-нить в таком духе) не покатит.