[python] Подскажите пособие для начинающего

YUAL

И так я таки понял что отмазаться не получится и решил что надо научиться программировать. Хотя бы чисто чтбы иметь возможность писать нужные себе программы или модифицировать имеющиеся под себя.
После прочтения нескольких срачей на предмет Pascal vs Что-нибудь-ещё, решил останновиться на питоне. Он вроде не сильно сложный и на нём достаточно много опенсорсного софта. Ранее писал чё-то примитивное на qbasic, достаточно много скриптов для ультимы на бэсико-подобном скриптовом языке, подгонял готовые решения примитивных задач на C под нужные условия (сосед на втором курсе почвы учился ну и правка опять же готовых скриптов на перле под свои нужды.
Собственно вопрос: что можно хорошего почитать учащего программированию с нуля на питоне? Писать я собираюсь только под линухом так что учебник начинающийся фразой "установите майкрософт визуал студию" (или что-нить в таком духе) не покатит.

okis

Собственно вопрос: что можно хорошего почитать учащего программированию с нуля на питоне? Писать я собираюсь только под линухом так что учебник начинающийся фразой "установите майкрософт визуал студию" (или что-нить в таком духе) не покатит.
питон для дотнета, конечно, тоже есть, но не думаю, что это то, что ты хочешь
код писать можешь в любом текстовом редакторе, ide есть в том же эклипсе;
ссылки на учебники для начинающих программировать есть у них на сайте.

hwh2010

Собственно вопрос: что можно хорошего почитать учащего программированию с нуля на питоне?
Dive into python (есть русский перевод)

Serab

Как и всегда посоветую Шеня :D
Хорошая книга — научишься писать алгоритмы. Правда о возможности ее найти в печатном виде информации не имею.

Cnac

В печатном виде купить не должно быть проблемой — видел в книжном магазине, не помню в каком, в прошлом году. И на том же Озоне в продаже.

yroslavasako

Dive into python (есть русский перевод)
работает хорошо только на тех, кто до этого уже программировал.
Если автор ни разу не программировал до того - то нужно посмотреть паскаль хоть в минимальном виде: простейшие алгоритмы, вроде определения типа треугольника по сторонам, простые алгоритмы, стандратные алгоритмы (динамическое программирование - задача рюкзака, теория чисел - подсчёт количества различных делителей, алгоритм на графы - выделение областей связности, какое-нибудь сбалансированное дерево, быстрая сортировка и вставками, длинная арифметика - логарифмический подсчёт числа фиббоначи). Ну или можно кормана на паскале прорешать. Не то, чтобы это было непосредственно нужно на практике, эти задачи скорее помогают понять общие принципы алгоритмизации. А паскаль для этого подходит лучше всего: там нет ничего лишнего и неоднозначного, с другой стороны в нём можно сразу работать, не осваивая концепцию библиотек, плюс он не скрывает детали организации алгоритма, на питоне-то можно и быстрее написать те же самые задачи, но понимать как и почему они работают будет лишь тот, кто предварительно их освоил в более примитивном окружении.
А потом можно и нужно изучать конкретные полезные языки, питон вполне хорошо подходит: универсальный и мощный.

stm6692945

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

Helga87

предложи свой пример

YUAL

Как и всегда посоветую Шеня :D
Хорошая книга — научишься писать алгоритмы. Правда о возможности ее найти в печатном виде информации не имею.
Спасибо, да. Бумажный вариант меня как раз не волнует. Не читаю с бумаги.

pilot

Dive into python (есть русский перевод)
Ваще-то есть туториал.

stm6692945

я не хотел предлагать, я хотел решить же! весь день решал, вот:

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;
}
}
}

все ок, мне можно переходить к теории чисел?

alfadred

Как минимум, никто не мешает треугольнику быть одновременно прямоугольным и равнобедренным.

stm6692945

в рациональных числах?
ладно, вот так например можно:

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;
}
}
}

правда, вывод не причесал нормально.

alfadred

в рациональных числах?
А, у тебя там инты.
Я, честно говоря, не вчитывался.

yroslavasako

Отвратительное решение (если конечно подходить с точки зрения учебного программирования).
Во-первых, есть лишние сравнения (которые в elseif). Уж такой мизерный пример можно было автоматизировать. От учеников это требуют по двум причинам 1) сразу учиться писать оптимальный код 2) научиться строить сложные деревья условий
Это с точки зрения критики стиля написания. А так - задача не работает вовсе. Нет обработки тупоугольный/остроугольный, нет проверки на неравенство треугольника, нет проверки на положительность сторон.

stm6692945

какие там сравнения лишние?

yroslavasako

какие там сравнения лишние?
(a == b && a != c)

stm6692945

непонятно, почему это сравнение лишнее

Andbar

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

YUAL

Как и всегда посоветую Шеня :D
Кто-нибудь его видел не в уёбищном пдф, который я на нетбуке запарился читать?

Vlad77

Кто-нибудь его видел не в уёбищном пдф, который я на нетбуке запарился читать?
Возьми тех, да пересобери как нравится. http://www.mccme.ru/free-books/

YUAL

спасибо - да.
Оставить комментарий
Имя или ник:
Комментарий: