От продавца до Big Data Scientist #2

Прошлый пост – От продавца до Big Data Scientist #1


Итак, я начал проходить базовый курс по Пайтону на сайте степик. Курс №67, вроде. Мне всё нравится =D Хочется стравнить его с практикумом, но наверное пока рановато. Я прошёл первую "неделю" за 4 дня. А всё потому, что достаточно много из пройденного было уже изучено в практикуме. Но! Были и новые для меня штуки. Например input(). Наконец-то меня научили как вводить собственные данные, а не только работать уже с исходными. Я написал свою первую программку, которая решает квадратные уравнения. Принимает на вход 3 аргумента и выдаёт два корня квадратного уравнения, или один =) Зачем мне это нужно было? Потому что, лет 20 назад мой старший брат написал похожую программку на бейсике и я был просто восхищён :) Теперь пришло время и мне написать похожую:


a = float(input('введите первый аргумент'))

b = float(input('введите второй аргумент'))

c = float(input('введите третий аргумент'))

d = b**2 - (4 * a * c)

x1 = (-b + d**0.5) / (2 *a)

x2 = (-b - d**0.5) / (2 *a)

if d < 0:

print('Уравнение корней не имеет')

elif d == 0:

print('Корень уравнения = {:.2f}'.format(x1))

else:

print('Первый корень уравнения = {:.2f}'.format(x1))

print('Второй корень уравнения = {:.2f}'.format(x2))


Вооот.. что ещё нового? Разбирался с логическими операциями: Это даётся не просто, но вроде начал понимать. Прорешал все задания по окончанию недели. Нравится, что потом можно посмотреть решения других учащихся. Все решения можно разделить на 3 типа: Человек такой же как ты и решает весьма примитивно; человек знает гораздо больше и выпендривается решая в одну строчку, но так, что ничего не понятно; человек знает намного больше и тролит показывая сверхпримитивное решение, написанное явно с помощью другого кода =) Спасибо им всем, и научишься и посмеёшься. Многие пишут, что думают над задачами часами, а то и днями. пока максимум пол часа приходилось обмазговывать задания. Но это видимо пока.

Так, начал слушать вторую неделю. Первая тема цикл While: И вроде задачи решались и всё понятно, пока не попалась задача, решением к которой был вот такой код:


a, b = int(input()), int(input())

s = 1

while s%a != 0 or s%b != 0:

s += 1

print (s)


Но в моём первоначальном решении строчка цикла выглядела иначе:

while s%a != 0 and s%b != 0:

что мной читалось как: продолжать цикл пока число s не делится на цело и на a и на b.

блять... пока писал, что нихрена не понимаю, почему там должен стоять оператор or понял.

Ладно проехали :)

Значит продолжаю своё обучение.

Из забавного. В субботу сидели семьёй завтракали и на коробке шоколадных подушечек была головоломка для детей: посчитать число треугольников в фигуре содержащие в себе число подушечек кратное трём. Ну и я начал писать в голове код ,который сделал бы это за меня =D мысли были прерваны, но потом ночью, когда все уснули я всё таки решил задачку в голове и тоже спокойно уснул .

Всем спасибо :)

2
Автор поста оценил этот комментарий

Прекрасно понимаю восторг от чувства, что твоя программа работает. Пусть из 3 строчек, зато твоя и работает!
Но от прочтения поста остались странные ощущения.
Да, я понимаю, ты пишешь это для себя. Но для одних это детский лепет, для других по-прежнему непонятные заклинания на эльфийском. Не понимаю в чем тут может быть интерес для читателей.
Еще такая мысль возникла забавная. Мне кажется, что я ничего не знаю о программировании. Особенно когда смотрю вакансии. А потом смотрю на ваш пост... нет, у меня не возникает желания самоутвердиться за ваш счет. Наоборот, возникает странное чувство - смесь сочувствия и зависти от того, что вам еще столько всего предстоит узнать.
Не воспринимайте как критику. Просто поток мыслей.

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

В чём интерес для читателей? Да сам не знаю. Некоторые из подписавшихся подсказывают, мотивируют и вдохновляют своими комментариями. Надеюсь им это тоже доставляет некоторое удовлетворение. Другие, наверное сами мотивируются, глядя как отдельно взятый настоящий человек делает маленькие шажки в сторону будущего. И ведь уже 21 человек зачем-то подписался

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

Помните Высоцкий пел:

"Весь мир на ладони - ты счастлив и нем

И только немного завидуешь тем,

Другим - у которых вершина еще впереди."

Наверное, Вы уже на вершине, а я только стою у подножия и робко гляжу куда-то вверх =)

показать ответы
1
Автор поста оценил этот комментарий

А представьте себе, что вы напишете до конца готовый фирменный продукт. С инсталлятором, с оконным интерфейсом. Прикладное программирование предполагает коробку и юзабилити, и тогда пейте шампанское. (Я после окончания работ еду пить пиво и есть море шашлыков)

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

я пока могу только есть шашлыки, а вот создавать юзабилити пока не умею. Но обязательно научусь =)

показать ответы
1
Автор поста оценил этот комментарий

Да ладно, можно просто проверку сделать if - else. Я другого не понимаю. Подобную консольную программу на Бейсике я писал на первом курсе института. Потому что никаких графических интерфейсов на наших больших машинах в 1990 году не было. Потом я писал много консольного кода для курсовых на Фортран 4. Тоже потому что тогда было начало девяностых и даже 286 был по цене автомобиля. Но какого хрена писать консольный интерфейс сейчас, когда есть миллион платформ с красивыми оконными интерфейсами и конечно же замечательная Android Studio, где ты можешь своим братьям - племянникам сделать набор разных школьных приложений для проверки решения уравнений?

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

эм.. эта программка не имеет ценности для кого-то кроме меня самого. Не ищите в этом смысла =)

показать ответы
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

3
Автор поста оценил этот комментарий

Разве что на вот такой вершине)

Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

эхехе ) Да, так ведь тоже не плохо

Автор поста оценил этот комментарий

"Пайтон работает и с комплексными числами" - круто, если убрать проверку D, то что выведет:
x^2+x+2=0

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Первый корень уравнения = -0.50+1.32j

Второй корень уравнения = -0.50-1.32j

показать ответы
Автор поста оценил этот комментарий

В таком случае пожелаю успехов!
Я сам сейчас по чуть-чуть изучаю Питон, но в веб-программировании, а именно - скрапинг и парсинг данных в целом.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо )

2
Автор поста оценил этот комментарий

float нельзя сравнивать на равенство, у него почти всегда погрешность вычисления будет.

С человеческой точки зрения 0.00000000000000000001 и 0 - одно и то же. С машинной - нет.


если хочешь сравнить флоат с чем-либо, то надо из этого флоата вычесть это что-либо, взять модуль от полученной разности и сравнивать его на больше-равно с неким эпсилон, которое задаёт точность сравнения. Как правило, 7 знаков достаточно.


Что-то типа

if abs(d) <= 0.0000001:

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

ох, ёпта, сложна. Но, да, идея мне понятна. Спасибо!

показать ответы
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

показать ответы
1
DELETED
Автор поста оценил этот комментарий
Нет, у вас сначала вычисление, а потом проверка условия. Или в питоне вся строчка выполняется только когда требуется значение переменной?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да, по идее должен крашится. Но, почему-то работает. Хм.. очередная загадка =)

DELETED
Автор поста оценил этот комментарий
Отлично! А ваша программа не выдает ошибок, когда пытается взять квадратный корень из отрицательного числа?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

корень извлекается только при вычислении дискриминанта, но в этом случае она выведет: "Уравнение корней не имеет". Попробуйте например ввести 1, 5, 7

показать ответы
Автор поста оценил этот комментарий
А сейчас?
раскрыть ветку (1)
Автор поста оценил этот комментарий

А сейчас я знаю что такое комплексные числа и мнимая единица)

Автор поста оценил этот комментарий

Комплексные числа - расширение поля действительных чисел за счет добавления мнимой единицы - i (обозначение). Причем i^2 = -1.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Я прочитал Ваш комментарий и он все ещё мне не понятен =D

показать ответы
DELETED
Автор поста оценил этот комментарий

А ты держишь слово и пишешь пост каждую неделю:) мне приятно видеть активных и любознательных людей. Отдыхать не забывай, нервное истощение штука реально страшная.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Я дня 3 в неделю стабильно прокрастинирую :D

Автор поста оценил этот комментарий
В BigData без математического образования (судя по отсутствию решения для комплексных корней)? Это будет невероятно тернистый путь. И с математики, наверное, стоит начать, ИМХО, потому что учить бигдату путем изучения Питона это как учить строительное дело путем изучения устройства дрели: оно, конечно, надо знать до определённой степени (какую кнопку дать и куда сверло вставлять), но далеко не самое важное.
раскрыть ветку (1)
Автор поста оценил этот комментарий

математика будет следующей =)

DELETED
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

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

показать ответы
DELETED
Автор поста оценил этот комментарий

я вот тож не понимаю, почему до сих пор не набежали "гуру" с минусометами. Помню, когда учился, много таких было.

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

О! Вы держите слово и комментируете каждый пост! Спасибо, мне очень приятно :)

показать ответы
Автор поста оценил этот комментарий

Комплексные числа - расширение поля действительных чисел за счет добавления мнимой единицы - i (обозначение). Причем i^2 = -1.

раскрыть ветку (1)
Автор поста оценил этот комментарий

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

Автор поста оценил этот комментарий

Офигеть, прям букву j выводит?
*ладно, хоть и мнимая единица - i.

раскрыть ветку (1)
Автор поста оценил этот комментарий

выводит. Я правда не знаю, что это значит =D

показать ответы
Автор поста оценил этот комментарий

Просто комп не умеет в аналитическом виде решать.

Это для человека (1/3 + 1/3 + 1/3) тождественно равно единице.

А для машины это 0,3333...  + 0,3333... + 0,3333... = 0,9999.... И единице уже не равно.

раскрыть ветку (1)
Автор поста оценил этот комментарий

да-да, я понял теперь разницу

2
Автор поста оценил этот комментарий

"Зануда математик": квадратное уравнение всегда имеет 2 корня:
1) - они одинаковы, D=0
2) - они в поле Действительных чисел, D>0
3) - они в поле Комплексных чисел, D<0
И еще можно по теореме Виета сделать.

"Зануда программист": сперва D проверьте, потом квадратный корень считайте.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Да, вы абсолютно правы по всем пунктам, спасибо! Но почему-то и так работает, видимо Пайтон работает и  с комплексными числами. Но, снова Вы правы, это моё упущение.

показать ответы