Под этим солнцем и небом мы тепло приветствуем Вас, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Бухта 2.0. Тёплая. Ламповая. Твоя.

Автор Тема: Клуб программистов  (Прочитано 6165 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн za4ot

  • *
  • Сообщений: 310
Клуб программистов
« Ответ #30 : 04 Июнь 2021, 22:21 »
0
Почему в Python в двух программах с одинаковым кодом выражение if index: в одной программе работает при неопределенной в цикле index, а в другой вылетает при попытке запустить программу.
Проблемный код:
for i in stroka:
    if i != "a":
        index = number.index (i) - 1
if index:

Что-то подсказывает, что нужно делать так:
for i in stroka:
    if i != "a":
        index = number.index (i) - 1
    else:
        index = None
if index != None:


Сообщение объединено: 04 Июнь 2021, 22:28
Есть ли какой то аналог goto в Python? Или завершить программу из цикла можно только по sys.exit()?
Пираты - наше всё!

Оффлайн IgorLutiy

  • *
  • Сообщений: 907
  • Пол: Мужской
  • Выбраковщик
    • Oblivion, Skyrim & Fallout3 Modding
Клуб программистов
« Ответ #31 : 05 Июнь 2021, 11:17 »
+1
Результатом условного выражения должно быть True или False. Логично предположить, что None не относится ни к одному, ни ко второму, следовательно получаем ошибку.
А во втором случае у нас идет сравнение и мы получаем в итоге либо True либо False.

Цитировать
Есть ли какой то аналог goto в Python? Или завершить программу из цикла можно только по sys.exit()?
Насколько я знаю - аналога нет. Вообще конструкция типа goto в современном программировании считается не очень хорошим тоном.
Мир друзьям - смерть врагам!
Награды Золотая Палитра - художнику (ПП 2013 года) Синяя Роза - за победу на Первом поэтическом конкурсе Бухты Плюшевый мишка - приз зрительских симпатий на Первом поэтическом конкурсе Бухты

Оффлайн za4ot

  • *
  • Сообщений: 310
Клуб программистов
« Ответ #32 : 06 Июнь 2021, 22:29 »
0
В одних книгах советуют изучать всё постепенно, долго и скучно, в других советуют сразу начать делать какой-нибудь проект с GUI, классами и прочими приблудами и если когда сразу ничего не будет работать, то только тогда лезть в первоисточники разбираться. Как вы изучали языки постепенно или сразу в пекло?
Пираты - наше всё!

Оффлайн IgorLutiy

  • *
  • Сообщений: 907
  • Пол: Мужской
  • Выбраковщик
    • Oblivion, Skyrim & Fallout3 Modding
Клуб программистов
« Ответ #33 : 06 Июнь 2021, 23:04 »
0
Цитировать
В одних книгах советуют изучать всё постепенно, долго и скучно, в других советуют сразу начать делать какой-нибудь проект с GUI, классами и прочими приблудами и если когда сразу ничего не будет работать, то только тогда лезть в первоисточники разбираться. Как вы изучали языки постепенно или сразу в пекло?
Удачный вечер для вопросов. Мне как раз надо немного передохнуть от работы, а это значит, что я могу разлиться мыслею по древу. За сим начну (полагаю, это будет долгая история).

Здесь можно прочесть краткое описание моего пути.

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

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

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

Для первого пути выбирать придется то, что востребовано на рынке. Учить дельфи, руби или перл - не вариант. Джава, си шарп (или плюсы), питон, джаваскрипт или пхп (если под веб разработку) - это их всё.
Начинать им нужно с основ. Ибо чем лучше они поймут основы - тем легче им будет потом совершенствовать свои навыки и осваивать новые технологии. Основы то везде одни и теже. Но нужно при этом кое-что понимать. Извечный вопрос что было яйцо или курица с какого языка начинать учить программирование. Тут можно копий сломать столько, что хватит на войско Македонского. Лично мое мнение, основанное на собственном опыте и на опыте многих уважаемых людей - начинать в этом случае можно или с С/С++ (но это для смертничков, велик шанс обломаться и навсегда возненавидеть программирование, но зато если уж зайдет - то все просторы вам будут открыты) или с Паскаля (который хоть все и обплевывают, но именно для обучения он великолепен, хотя и не только для обучения). Не в коем случае не стоит начинат ьс чего-то вроде питона. Почему? Он слишком простой и у него слишком много всего под капотом. То есть вы научитесь прогать на питоне, но прогать вы уметь скорее всего не будете, то есть вы не будете понимать, что на самом деле там происходит. Слишком высокий уровень. Плюс динамическая типизация, что конечно легко, но чревато при переходе на что-то иное. В общем с питона я бы точно начинать не советовал. Но есть и другие мнения.
Для начала я бы рекомендовал почитать Столярова. У него интересный взгляд на обучение программированию, но на мой взгляд, говорит и пишет он очень толково. Да, предлагает начинать с паскаля, потом переходить на плюсы. Вроде разумно.

Второй путь - прогание как хобби или увлечение. В этом случае вообще всё пофигу, как говорил незабвенный Лобанов. Ведь учим то в кайф. С чего захотели - с того и начали. Как захотели - так и учим. В этом варианте можно учиться как с основ, так и пробуя различные пет-проекты. Типа, а создам ка я свой браузер/текстовый редактор/калькулятор/самописный сайт. Можно так, а можно так. А можно совмещать оба подхода.

Так, пора опять браться за работу, сильно длинно не получилось. Если будет желание, можно посмотреть курсы по питону на Степике. Там есть из чего выбрать. Отличная платформа для онлайн обучения. Если будут еще какие-то более конкретные вопросы - можно задавать ,по мере сил постараюсь ответить.

Ах да, если что - я выбрал второй путь. Для меня прогание это вид творчества. Ну и иногда бывает полезно что-то автоматизировать.



Мир друзьям - смерть врагам!
Награды Золотая Палитра - художнику (ПП 2013 года) Синяя Роза - за победу на Первом поэтическом конкурсе Бухты Плюшевый мишка - приз зрительских симпатий на Первом поэтическом конкурсе Бухты

Оффлайн za4ot

  • *
  • Сообщений: 310
Клуб программистов
« Ответ #34 : 07 Июнь 2021, 19:55 »
+1
Цитировать
Началось всё, наверное, еще в конце нулевых. Когда я переводил и писал туториалы для редактора Обливиона. Там был встроенный скриптовый язык, который с каждой игрой становился все больше и больше похож на вполне себе язык программирования. Но главное, этот скриптовый язык давал большие возможности для творчества в игре, для создания модов.
Как мне это знакомо. Особенно выделенная часть. Первая игра, которую я модифицировал это был "Сталкер. Тень Чернобыля". Всё началось с того, что я изменил в скрипте переносимый вес, ибо лут было жалко бросать, логичным продолжением было изменить скрипт усталости ГГ от переносимого веса. Первым скриптом (вернее кусочком скрипта), который я написал была функция, которая генерировала разный лут в карманах убитых НПС в зависимости от того какой у НПС был уровень (новичек, ... , мастер).
Когда стал играть в Х3 Terran Conflict начал собирать свою сборку модов и лишь иногда заходил во встроенный скрипт-редактор, что-то поправить в моде пол себя. И лишь через 8 лет меня прорвало. Я практически переписал всю сборку модов под себя, а те скрипты, которых в принципе не было все написал сам. Это были самые творческие и плодотворные пол года в моей жизни. Такого творческого подъема я никогда не испытывал (спасибо кривым рукам Cycrow, но это у совсем другая история). Сам процесс я иначе как творчество и не рассматривал.

На всякий случай поставил Free Pascal, может случится выручить какого-нибудь школьника или студента (не бесплатно ясен-пень  :D). Книжку Песни о Паскале почитал чутка - интересное чтиво, пригадится, для освежения знаний по Pascal и для изучения Python-а если там есть интересные задачи. Для пробы хотел сделать программу считающую сумму цифр в числе, начал набирать - долго, курсор бесит. Хотел копипастом текс программы ввести, а вот фиг вам. Ладно, думаю, обману судьбу - набрал в Notepad++, сохранил в .pas, открываю, а вот фиг вам русские буквы в пути к файлу нильзя, переименовал, открываю, а вот фиг тебе набор в Notepad++ - русские буквы в программе кракозябры перепечатывай. Отвык я от такого хардкора. Пока скачивал устанавливал наткнулся на статью: "Релиз компилятора Free Pascal 3.2" там первым комментарием к статье было:
Цитировать
>Добавлена поддержка блоков на языке Си
...для возможности плавного перехода тех, кто всё ещё пытается по разным причинам заниматься пердолингом мертвой стюардессы, на нормальный ЯП.

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

В изучении ЯП, как и в изучении чего-либо также придерживаюсь второго пути. В идеале хотелось бы написать что-то вроде пакета решения различных прикладных задач (одно время делал работы по расчету электрических схем и всегда мечтал это автоматизировать, т. к. посчитать 10 вариантов из методички в экселе за 1 день это тот еще квест), небольшую бухгалтерскую программку для личных нужд - пока вообще всё считаю в экселе - в некоторых моментах не совсем удобно, а в некоторых совсем не удобно. Программку для заметок - те что есть либо избыточны, либо уродливы, либо платные. И еще хочу написать хорошую программу для построения векторных диаграмм - единственная, которая приемлемо работает это Vetrox (какой-то студент написал), но со своей тележкой недостатков.
Длинновато получилось, ну и ладно. )))

Заметил интересный факт. Все ЯП, на которых я писал нужные мне программы, а не просто ознакамливался, начинаются с буквы "Р": Pascal, Perl -> Python - это судьба. Ждем появления P, P++ и P#.   ;D

« Последнее редактирование: 07 Июнь 2021, 20:06 от za4ot »
Пираты - наше всё!

Оффлайн IgorLutiy

  • *
  • Сообщений: 907
  • Пол: Мужской
  • Выбраковщик
    • Oblivion, Skyrim & Fallout3 Modding
Клуб программистов
« Ответ #35 : 07 Июнь 2021, 20:30 »
0

Цитировать
Заметил интересный факт. Все ЯП, на которых я писал нужные мне программы, а не просто ознакамливался, начинаются с буквы "Р": Pascal, Perl -> Python - это судьба. Ждем появления P, P++ и P#.
Пока можешь попробовать что-то из этого списка :) Из более-менее известных и актуальных еще PHP остался.
Мир друзьям - смерть врагам!
Награды Золотая Палитра - художнику (ПП 2013 года) Синяя Роза - за победу на Первом поэтическом конкурсе Бухты Плюшевый мишка - приз зрительских симпатий на Первом поэтическом конкурсе Бухты

Оффлайн za4ot

  • *
  • Сообщений: 310
Клуб программистов
« Ответ #36 : 08 Июнь 2021, 01:00 »
0
Lazarus! Это тот же Free Pascal, только с конструктором GUI из каропки. Сношу Free Pascal, ставлю Lazarus. Эх, сам не допетришь, никто не подскажет.  ;D  Одно до конца не понятно. Если верить описаниям, то создавая программу в 32-битной версии она будет работать и на 64-битной системе, а создавая программу в 64-битной версии на 32-битной ее уже не запустишь. Правильно я понимаю? Какую ж тогда ставить?
Что-то этот Lazarus какой-то мутный. С кодировками беда и как это исправить я пока не знаю.  Нужно какой-то модуль типа Encode найти как в Perl, чтоб на лету кодировал в UTF8, cp866 и ср1252. Для простой консольной программы создает проект и сохраняет ее как проект, а не как .pas. Чувствую нужно обращаться к первоисточникам - с ходу не разобраться. По крайней мере в нем копипаст работает и русские буквы в пути не мешают - хоть что-то радует.
« Последнее редактирование: 08 Июнь 2021, 01:57 от za4ot »
Пираты - наше всё!

Оффлайн IgorLutiy

  • *
  • Сообщений: 907
  • Пол: Мужской
  • Выбраковщик
    • Oblivion, Skyrim & Fallout3 Modding
Клуб программистов
« Ответ #37 : 08 Июнь 2021, 15:50 »
0
Я использую RAD Embarcadero с Дельфи. Лазарусом пользовался когда-то один раз, чтобы прогать под линукс.

Создавать лучше под 64-битную версию. Сейчас это более универсальный вариант.

Мир друзьям - смерть врагам!
Награды Золотая Палитра - художнику (ПП 2013 года) Синяя Роза - за победу на Первом поэтическом конкурсе Бухты Плюшевый мишка - приз зрительских симпатий на Первом поэтическом конкурсе Бухты

Оффлайн za4ot

  • *
  • Сообщений: 310
Клуб программистов
« Ответ #38 : 09 Июнь 2021, 00:52 »
0
В Lazarus даже простая консольная программа разрабатывается только в виде проекта. Если взять отдельно лежащий файл .pas и открыть его, то автоматом создастся обвязка из файлов проекта по дефолту, а исходный файл .pas превратится в project1.lpi. Поэтому после создания .exe если планируется вносить какие-либо изменения, то файлы проекта удалять категорически запрещено (В общем привыкать нужно долго, но думаю со временем привыкнуть можно). С кодировками разобрался. Связываем проект в инспекторе проектов с модулем LazUtils, а в программу подключаем модуль LazUTF8. Теперь любая строка может быть перекодирована на лету (теоретически, ибо проверил только первый вариант) так:
UTF8ToConsole ('Привет!')  это UTF8 -> cp866 вывод из программы в консоль
UTF8ToWinCP ('Привет!')  это UTF8 -> cp1252 вывод из программы в файл
ConsoleToUTF8 ('Привет!')  это  cp866 -> UTF8 ввод из консоли в программу
WinCPToUTF8 ('Привет!')  это cp1252 -> UTF8 ввод из файла в программу
Насчет работы таких выражений сильно сомневаюсь, но может и сработают:
WinCPToConsole ('Привет!')
ConsoleToWinCP ('Привет!')
В Free Pascal такое вряд ли прокатит, скорее всего, это фишка Lazarus, ибо имена модулей как бы намекают.
Еще одно замечание - такие финты с кодировкой увеличивают размер исходника на 620 КБ. (Программа по подсчету суммы цифр в числе 170КБ, с кодировками 789КБ - почти метр для программы в 10 строк!)
Теперь с чистой совестью можно возвращаться к Python.  :D
Пираты - наше всё!

Оффлайн Аладор

  • *
  • Сообщений: 2449
  • Пол: Мужской
  • Странник между мирами
Клуб программистов
« Ответ #39 : 11 Июнь 2021, 13:36 »
0
В Lazarus даже простая консольная программа разрабатывается только в виде проекта.
Это не только в лазарусе так, а в любом компилируемом языке программирования.

А вообще я бы посоветовал попробовать Visual Studio от Microsoft, бесплатная IDE, кросплатформенная разработка, поддержка разработки и компиляции на разных языках программирования (python, кстати тоже присутствует), но имхо, стоит попробовать начать с С#, за счет фреймворка разработка на нем сильно упрощается и ускоряется, много документации и т.п. А после него можно будет на xamarin (mono) посмотреть - это по сути тот же C# просто на опенсорсных компонентах, и на нем возможна кросплатформенная разработка, вплоть до мобильных устройств.

Короче можно поставить чистый Visual Studio и выбрать для начала минимальный набор дополнений, а после уже по мере желания можно его расширять, делается это все прямо через инсталлятор, а то чего нет в штатном наборе, почти наверняка можно найти среди доп. пакетов NuGet подобрав подходящий набор готовых библиотек созданных другими программистами, главное следить за типом лицензии.

Цитировать
Еще одно замечание - такие финты с кодировкой увеличивают размер исходника на 620 КБ. (Программа по подсчету суммы цифр в числе 170КБ, с кодировками 789КБ - почти метр для программы в 10 строк!)
Это нормальное явление для языков с не латинским алфавитом, набор кодировки содержит больше символов, вот и раздувается размер.
“Предупрежден, значит вооружен“
Никогда не кормите троллей, они не поддаются приручению, и от сытости лишь сильней дичают.
Награды Маяк - за неоценимую помощь в создании Бухты 2.0

Оффлайн za4ot

  • *
  • Сообщений: 310
Клуб программистов
« Ответ #40 : 11 Июнь 2021, 17:57 »
0
бесплатная IDE
Пользуюсь Notepad++.
стоит попробовать начать с С#, за счет фреймворка разработка на нем сильно упрощается и ускоряется, много документации
Если бы мне было лет 20, то непременно начал бы. Для работы мне не пригодится, а для удовольствия и моих целей python-а более чем достаточно. А документации и библиотек для любого языка сейчас предостаточно. Ну и учить параллельно 2 ЯП я не смогу, хоть один освоить бы.
Пираты - наше всё!

Оффлайн IgorLutiy

  • *
  • Сообщений: 907
  • Пол: Мужской
  • Выбраковщик
    • Oblivion, Skyrim & Fallout3 Modding
Клуб программистов
« Ответ #41 : 11 Июнь 2021, 22:38 »
0
Цитировать
Ну и учить параллельно 2 ЯП я не смогу, хоть один освоить бы.
Тут все зависит от потребностей. Если для работы, с глубоким пониманием - то учить несколько языков сложно. А если для себя, не сильно углубляясь в детали - это не так уж сложно. Парадигм программирования не так уж много, в остальном основы идентичны, отличается по сути лишь синтаксис.

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

То есть опять же все упирается в цели и задачи. Но здесь как и с обычными языками. Есть те, кто и один с трудом знают, есть много тех, кто знает 2-3 языка. И есть полиглоты.
Мир друзьям - смерть врагам!
Награды Золотая Палитра - художнику (ПП 2013 года) Синяя Роза - за победу на Первом поэтическом конкурсе Бухты Плюшевый мишка - приз зрительских симпатий на Первом поэтическом конкурсе Бухты