Популярное сообщение Utka Опубликовано: 25 сентября 2021 Популярное сообщение Поделиться Опубликовано: 25 сентября 2021 (изменено) Введение Наступил 10 класс и я узнал, что с следующие два года я первое буду учиться готовиться к егэ, а также делать индивидуальный проект. Понимая что самая моя сильная сторона - это программирование я решил вписать в строчку "Предмет проекта" информатику. Я давно хотел написать какое нибудь приложение. Только вот проблема: я не знал что я буду писать. Сначала решил написать бота для Discord, но не знал, что он будет делать, а также поняв, что очень много информации придется прочитать на эту тему, решил все таки писать приложение на Python. Но вот снова та же проблема я так и не придумал тему. И вот сижу я как то читаю обсуждения на топдеке и понимаю, что не существует приложения по поиску карт на компьютере. Проверив это в интернете, подтвердил данную мысль. Да есть боты для вк и телеги, но для индивидуального проекта важно, что нет именно приложений. Счастливый я пришел в субботу домой после школы, как всегда сел за компьютер. Проблема #1 А как писать то.... Да вопрос глобальный, но он был поставлен. Было несколько вариантов, не буду описывать все ибо они даже не рассматривались подробно: Парсинг информации с сайта. Первое, что пришло в голову. Начал читать по этому поводу информацию, а затем понял, что гиблое дело по нескольким причинам: изучать это долго, а писать муторно и сложно. Найти базу со всеми картами. Первой проблемой было, что я не мог просто на просто найти такую базу, а потом осознал, что да изображение показывать я буду, а цену, оракл и легальность как? После этого вопроса вариант был отправлен в мусорку. Api scryfall. "Вот оно!" - подумал я. А как api добавить в python.... Начал гуглить: узнал, что данное api есть как библиотека для python(для интересующихся scrython называется). Установил, изучил, написал. Проблема #2 Дизайн.... Да это моя слабая сторона. Я человек абсолютно не творческий. Я больше скажу данная проблема до сих пор не решена и приложение выглядит очень просто и по детски. Пока год впереди буду работать над этим, а также над добавлением новых функций и улучшению старых. Немного о программе Программа написана с помощью библиотек: scrython, tkinter. Использую базу данных scryfall программа может выводить на экран: фото карты, ее оракл, цены(также со scryfall), легальность в разных форматах. Будет допиливаться до красивого и полезного состояния. Сама программа выглядит несуразно: Скрытый текст import scrython from tkinter import * from PIL import Image, ImageTk from urllib.request import urlopen def search(event): global our_label global start global name our_label.pack_forget() name = card_name.get() if name != '': card = scrython.cards.Named(fuzzy=name) card_image = scrython.cards.Id(id=card.id()).image_uris() image = Image.open(urlopen(card_image['small'])) photo = ImageTk.PhotoImage(image) our_label.image = photo our_label['image'] = our_label.image else: error['text'] = "Вы не ввели название карты или ввели его не правильно! Попробуйте еще раз!" def oracle(event): global name if name != '': oraclee["text"] = "" card = scrython.cards.Named(fuzzy=name) card_oracle = scrython.cards.Id(id=card.id()).oracle_text() oraclee['text'] = card_oracle else: error['text'] = "Вы сначала должны найти карту, чтобы прочитать оракл!" def price(event): global name if name != '': card = scrython.cards.Named(fuzzy=name) card_price = scrython.cards.Id(id=card.id()).prices(mode='usd') if card_price != None: if scrython.cards.Id(id=card.id()).foil(): cardfoil_price = scrython.cards.Id(id=card.id()).prices(mode='usd_foil') pricee['text'] = 'Цена:' + ' ' + '$' + card_price + '\n' + 'Цена фоиловой версий:' + ' ' + '$' + cardfoil_price else: cardfoil_price = 'Эта карта не имеет фойловой версии' pricee['text'] = 'Price:' + ' ' + '$' + card_price + '\n' + 'Foil version Price:' + ' ' + cardfoil_price else: pricee['text'] = "Карта не имеет цены по каким то причинам ^_^" else: error['text'] = "Вы должны сначала найти карту, чтобы узнать ее цену!" def legality(event): global name if name != '': formats['text'] = '' card = scrython.cards.Named(fuzzy=name) card_legality = scrython.cards.Id(id=card.id()).legalities() for i in card_legality: formats['text'] = formats['text'] + i + ':' + ' ' + card_legality[i] + '\n' else: error['text'] = "Вы должны сначала найти карту, чтобы узнать ее легальность!" root = Tk() root.geometry('1024x768') root.resizable(width = False, height = False) root.iconbitmap('Icone.ico') root.title('MTG Helper') card_name = Entry(width=50) name = '' button_tosearch = Button(text="Найти", width=10,bg="red",fg="white",font=("ariel",16,"bold")) button_oracle = Button(text="Оракл", width=10,bg="red",fg="white",font=("ariel",16,"bold")) button_price = Button(text="Цена", width=10,bg="red",fg="white",font=("ariel",16,"bold")) button_legality = Button(text='Легальность', width=10,bg="red",fg="white",font=("ariel",16,"bold")) our_label = Label() oraclee = Label(width=200, height=3, anchor='w', justify='left') pricee = Label(width=100, height=3, anchor='w', justify='left') formats = Label(width=100, height=16, justify='left', anchor='w') error = Label() title = Label(text="MTG Helper",width=100, bg="red",fg="white", font=("ariel", 20, "bold")) text1=Text(root,height=30,width=20,font='Arial 14',wrap=WORD) text1.place(x = 600, y = 80) scrollbar = Scrollbar(root) scrollbar.place(x = 580, y = 350) scrollbar['command'] = text1.yview text1['yscrollcommand'] = scrollbar.set card_name.place(x = 312, y = 50) button_tosearch.bind('<Button-1>', search) button_tosearch.place(x = 0, y = 80) button_oracle.bind('<Button-1>', oracle) button_oracle.place(x = 140, y = 80) button_price.bind('<Button-1>', price) button_price.place(x = 280, y = 80) button_legality.bind('<Button-1>', legality) button_legality.place(x = 420, y = 80) our_label.place(x = 0, y = 170) oraclee.place(x = 0, y = 380) pricee.place(x = 0, y = 420) formats.place(x = 0, y = 460) error.pack(side='bottom') title.pack(side='top') root.mainloop() Пользоваться ей достаточно просто: Вбиваете название карты Нажимаете кнопку поиск Затем можете нажимать остальные кнопки Примечание: для того, чтобы получить информацию о другой карте, надо повторить данный алгоритм заново. Всегда сначала надо нажимать кнопку поиска! Примечание #2: пока есть проблемы с отображением оракла карты если ее текст достаточно большой... Грустно, но проблема будет вскоре решена. Заключение Спасибо, что прочитали, надеюсь не будет хейта, а будут советы, как сделать приложение красивее, и какие функции добавить. Также прикладываю ссылку на скачивание(https://drive.google.com/file/d/1HARCSwPX23qKBDBM16-6C9rIICtIj8wN/view?usp=sharing) приложения(надеюсь будет работать 0_0) и буду рад, если попробуете и выразите свое мнение! Еще раз большое спасибо! Для меня этот опыт первый и очень надеюсь не последний Изменено 26 сентября 2021 пользователем Utka 4 5 4 2 3 1 1 17 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
SerLiar Опубликовано: 25 сентября 2021 Поделиться Опубликовано: 25 сентября 2021 Ниче не понял, программ то че делает. Где ищет. По карманам или где 2 2 1 9 4 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Utka Опубликовано: 25 сентября 2021 Автор Поделиться Опубликовано: 25 сентября 2021 32 минуты назад, SerLiar сказал: Ниче не понял, программ то че делает. Где ищет. По карманам или где да виноват, щас исправлю 1 2 2 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Популярное сообщение uberburner Опубликовано: 25 сентября 2021 Популярное сообщение Поделиться Опубликовано: 25 сентября 2021 Я: ух, как же я устал читать код на плюсах, пойду почитаю топдек. Топдек: ну вот тебе код на Питоне, раз от плюсов устал. 1 22 4 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
SimonOrchid Опубликовано: 26 сентября 2021 Поделиться Опубликовано: 26 сентября 2021 Обработчик ошибок нормально для старта сделал, но общее юзабилити это капец 2 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Utka Опубликовано: 26 сентября 2021 Автор Поделиться Опубликовано: 26 сентября 2021 2 часа назад, SimonOrchid сказал: Обработчик ошибок нормально для старта сделал, но общее юзабилити это капец что именно не так? все после функций? 2 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Nazar Опубликовано: 26 сентября 2021 Поделиться Опубликовано: 26 сентября 2021 Вообще не совсем понятно, зачем нужно приложение на пк, если для поиска карт ему нужен апи и сеть… учитывая наличие скрайфола с программируемым поиском… 7 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Utka Опубликовано: 26 сентября 2021 Автор Поделиться Опубликовано: 26 сентября 2021 7 минут назад, Nazar сказал: Вообще не совсем понятно, зачем нужно приложение на пк, если для поиска карт ему нужен апи и сеть… учитывая наличие скрайфола с программируемым поиском… нужна только сеть, апи встроено в программу. Ну а так вы правы, просто не нашел других нету тем для проекта, поэтому выбрал написание приложухи. Тем более первый опыт Ссылка на комментарий Поделиться на других сайтах More sharing options...
SerLiar Опубликовано: 26 сентября 2021 Поделиться Опубликовано: 26 сентября 2021 Электронный биндер с ценами сделай. Толку больше будет чем от программы, которая за тебя обезьяньи задачи выполняет. Хотя конечно все равно хорошо, я тупой и это сделать не смогу. 1 5 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Utka Опубликовано: 26 сентября 2021 Автор Поделиться Опубликовано: 26 сентября 2021 1 минуту назад, SerLiar сказал: Электронный биндер с ценами сделай. Толку больше будет чем от программы, которая за тебя обезьяньи задачи выполняет. Хотя конечно все равно хорошо, я тупой и это сделать не смогу. хорошо, спасибо) Ссылка на комментарий Поделиться на других сайтах More sharing options...
aspsnake Опубликовано: 26 сентября 2021 Поделиться Опубликовано: 26 сентября 2021 Если совсем придираться - на мобильных устройствах такое приложение будет гораздо более полезным, чем на десктопе Если не лень заморочиться - рекомендую Xamarin на C#. Придётся изучить много всего нового и переписать готовый код, но там небольшими усилиями можно портировать один и тот же код и интерфейс и на винду, и на мак / линукс, и на Android, и на iOS Будут поддерживаться даже умные телики и часы, если очень надо 1 1 3 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Utka Опубликовано: 26 сентября 2021 Автор Поделиться Опубликовано: 26 сентября 2021 (изменено) 10 минут назад, aspsnake сказал: Если совсем придираться - на мобильных устройствах такое приложение будет гораздо более полезным, чем на десктопе Если не лень заморочиться - рекомендую Xamarin на C#. Придётся изучить много всего нового и переписать готовый код, но там небольшими усилиями можно портировать один и тот же код и интерфейс и на винду, и на мак / линукс, и на Android, и на iOS Будут поддерживаться даже умные телики и часы, если очень надо спасибо большое! планирую сделать то же самое на Android (ибо правда намного полезнее), но на kotlin. На сколько это удобно и вообще стоит ли? И сильно ли C# отличается плюсов? Ибо плюсы немного изучал Изменено 26 сентября 2021 пользователем Utka Ссылка на комментарий Поделиться на других сайтах More sharing options...
aspsnake Опубликовано: 27 сентября 2021 Поделиться Опубликовано: 27 сентября 2021 21 час назад, Utka сказал: спасибо большое! планирую сделать то же самое на Android (ибо правда намного полезнее), но на kotlin. На сколько это удобно и вообще стоит ли? И сильно ли C# отличается плюсов? Ибо плюсы немного изучал C# по синтаксису похож на плюсы - думаю, будет нетрудно перейти (это в обратную сторону сильно труднее из-за работы с указателями). Kotlin тоже норм Ссылка на комментарий Поделиться на других сайтах More sharing options...
Utka Опубликовано: 27 сентября 2021 Автор Поделиться Опубликовано: 27 сентября 2021 33 минуты назад, aspsnake сказал: C# по синтаксису похож на плюсы - думаю, будет нетрудно перейти (это в обратную сторону сильно труднее из-за работы с указателями). Kotlin тоже норм Спасибо! Учту Ссылка на комментарий Поделиться на других сайтах More sharing options...
Популярное сообщение gurugray Опубликовано: 28 сентября 2021 Популярное сообщение Поделиться Опубликовано: 28 сентября 2021 (изменено) Сорри что с непрошеными советами, но раз тему открыл в паблике :)… Про продутовость: Лучше сделать мини исследование о тех болях которые испытывает потенциальная целевая аудитория (ЦА) и решить именно её. Или выбрать конкретный сценарий который сейчас выполнять тебе сложно, а после создания продукта — легко, возможно это совпадёт и с болями ЦА и ты получишь нормальную обратную связь. Делать продукт ради написания кода — гиблое занятие — без получения обратной связи ты получишь лишь эмоциональное выгорание, не стоит так поступать на начальных этапах пути разработчика Про язык: Python — язык общего назначения, не очень подходящий для написания десктоп/мобильных приложений. Если не стоит цели написать именно на Python'е, а есть цель изучить платформу на которой будет работать приложение — лучше выбрать язык под платформу. Для Windows нормальным вариантом будет C# (как уже посоветовали), с WPF и подобными библиотеками. Для мобильных платформ Siwift (iOS), Kotlin (Android). Для MacOSX тот же Swift. Про инструменты: Надо изучить git и работу с Github. Выкладывать код, собранное приложение и инструкции к его сборке (работе) на этом сервисе гораздо удобнее, как и получить обратную связь от других разработчиков, включая контрибьют, если это будет интересно. Про дизайн и творчество: Дизайн приложения это в первую очередь системный подход — UX и шаблоны проектирования, творчество тут даже не на автором месте. А вот развитие вкуса нужно, как и погружение в детали UX, изучение UI-китов, Дизайн-Систем, а это именно про системный подход к освоению профессии. PS Для того, чтобы двигаться дальше, в развитии профессии разработчика — стоит смотреть, в том числе на смежные дисциплины, отличные от написания кода. На начальном этапе очень поможет найти себе ментора из уже работающих разработчиками людей и того кому могли бы доверить гайденс себя Удачи в этом деле Изменено 28 сентября 2021 пользователем gurugray 2 3 16 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Utka Опубликовано: 28 сентября 2021 Автор Поделиться Опубликовано: 28 сентября 2021 1 час назад, gurugray сказал: Сорри что с непрошеными советами, но раз тему открыл в паблике :)… Про продутовость: Лучше сделать мини исследование о тех болях которые испытывает потенциальная целевая аудитория (ЦА) и решить именно её. Или выбрать конкретный сценарий который сейчас выполнять тебе сложно, а после создания продукта — легко, возможно это совпадёт и с болями ЦА и ты получишь нормальную обратную связь. Делать продукт ради написания кода — гиблое занятие — без получения обратной связи ты получишь лишь эмоциональное выгорание, не стоит так поступать на начальных этапах пути разработчика Про язык: Python — язык общего назначения, не очень подходящий для написания десктоп/мобильных приложений. Если не стоит цели написать именно на Python'е, а есть цель изучить платформу на которой будет работать приложение — лучше выбрать язык под платформу. Для Windows нормальным вариантом будет C# (как уже посоветовали), с WPF и подобными библиотеками. Для мобильных платформ Siwift (iOS), Kotlin (Android). Для MacOSX тот же Swift. Про инструменты: Надо изучить git и работу с Github. Выкладывать код, собранное приложение и инструкции к его сборке (работе) на этом сервисе гораздо удобнее, как и получить обратную связь от других разработчиков, включая контрибьют, если это будет интересно. Про дизайн и творчество: Дизайн приложения это в первую очередь системный подход — UX и шаблоны проектирования, творчество тут даже не на автором месте. А вот развитие вкуса нужно, как и погружение в детали UX, изучение UI-китов, Дизайн-Систем, а это именно про системный подход к освоению профессии. PS Для того, чтобы двигаться дальше, в развитии профессии разработчика — стоит смотреть, в том числе на смежные дисциплины, отличные от написания кода. На начальном этапе очень поможет найти себе ментора из уже работающих разработчиками людей и того кому могли бы доверить гайденс себя Удачи в этом деле Спасибо большое! Цель именно на Python, ибо это просит школа. В данный момент большие проблемы с портированием уже написанной проги(на kivy) на андроид. Ибо портируется без явных ошибок, а на телефоне не запускается. Пока решаю данную проблему. А так еще раз большое спасибо за совет от знающего человека! 2 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
ZMS Опубликовано: 28 сентября 2021 Поделиться Опубликовано: 28 сентября 2021 (изменено) А почему от бота для Дискорда отказался? Там же есть батарейка для питона и норм доки. Изменено 28 сентября 2021 пользователем ZMS 2 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Net_Ware Опубликовано: 28 сентября 2021 Поделиться Опубликовано: 28 сентября 2021 (изменено) 26.09.2021 в 04:46, uberburner сказал: Я: ух, как же я устал читать код на плюсах, пойду почитаю топдек. Топдек: ну вот тебе код на Питоне, раз от плюсов устал. Пиши на шарпе, плюсы раем будут казаться Upd: неужели С# так плох? Изменено 24 октября 2021 пользователем Net_Ware 7 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Utka Опубликовано: 28 сентября 2021 Автор Поделиться Опубликовано: 28 сентября 2021 2 часа назад, ZMS сказал: А почему от бота для Дискорда отказался? Там же есть батарейка для питона и норм доки. потому что нужна актуальность) я мог конечно написать заменителя Groovy бота, хотя их уже куча Ссылка на комментарий Поделиться на других сайтах More sharing options...
ZMS Опубликовано: 28 сентября 2021 Поделиться Опубликовано: 28 сентября 2021 18 минут назад, Utka сказал: потому что нужна актуальность) я мог конечно написать заменителя Groovy бота, хотя их уже куча Так зачем его, сделал бы тот же самый поиск карт. Ссылка на комментарий Поделиться на других сайтах More sharing options...
Utka Опубликовано: 28 сентября 2021 Автор Поделиться Опубликовано: 28 сентября 2021 1 час назад, ZMS сказал: Так зачем его, сделал бы тот же самый поиск карт. ну можно кстати. чо то я тупанул) будет тогда на комп, телефон(если все таки получится портировать) и как дискорд бот))) спасибо за совет) Ссылка на комментарий Поделиться на других сайтах More sharing options...
gurugray Опубликовано: 29 сентября 2021 Поделиться Опубликовано: 29 сентября 2021 20 часов назад, Utka сказал: Цель именно на Python, ибо это просит школа. В данный момент большие проблемы с портированием уже написанной проги(на kivy) на андроид. Собственно о чём я и говорил — экосистема python'а не заточена нормально под написание приложений такого плана. Ты потратишь тонну времени на изучение хаков и особенностей работы этой связки. А это время лучше инвестировать в изучение непосредственно программирования и библиотек экосистемы. Если цель таки изучить питон — рекомендую рассмотреть проекты для которых он сейчас применяется в индустрии (коммерческой разработке): дата-анализ, web-сервисы, просто сервисы для решения каких-то вычислительных задач или задач построения API. Вот что можно почитать: JupyterLab: Jupyter’s Next-Generation Notebook Interface — поможет не только с программированием для школы, но и с математикой (в какой-то мере) Data Analysis with Python (FreeCodeCamp) — курс по дата-анализу Flask — фреймворк для web'а Django — большой и мощный комбайн для быстрого построения web-сервисов (со своей экосистемой) Любую литературу по реляционным базам и объектным (как примеры — работа питона с PostgreSQL и mongoDB) Повторюсь — настоятельно не рекомендую писать приложения на питоне, чтобы инвестировать время в нужном направлении 2 3 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Utka Опубликовано: 29 сентября 2021 Автор Поделиться Опубликовано: 29 сентября 2021 1 час назад, gurugray сказал: Собственно о чём я и говорил — экосистема python'а не заточена нормально под написание приложений такого плана. Ты потратишь тонну времени на изучение хаков и особенностей работы этой связки. А это время лучше инвестировать в изучение непосредственно программирования и библиотек экосистемы. Если цель таки изучить питон — рекомендую рассмотреть проекты для которых он сейчас применяется в индустрии (коммерческой разработке): дата-анализ, web-сервисы, просто сервисы для решения каких-то вычислительных задач или задач построения API. Вот что можно почитать: JupyterLab: Jupyter’s Next-Generation Notebook Interface — поможет не только с программированием для школы, но и с математикой (в какой-то мере) Data Analysis with Python (FreeCodeCamp) — курс по дата-анализу Flask — фреймворк для web'а Django — большой и мощный комбайн для быстрого построения web-сервисов (со своей экосистемой) Любую литературу по реляционным базам и объектным (как примеры — работа питона с PostgreSQL и mongoDB) Повторюсь — настоятельно не рекомендую писать приложения на питоне, чтобы инвестировать время в нужном направлении спасибо еще раз огромное! но уже ничего не изменить, ибо я сдал тему проекта, где написано, что пишу я на python)) Ссылка на комментарий Поделиться на других сайтах More sharing options...
gurugray Опубликовано: 29 сентября 2021 Поделиться Опубликовано: 29 сентября 2021 23 минуты назад, Utka сказал: где написано, что пишу я на python)) либо я чего-то не понял, либо ты я про python и написал весь пост Ссылка на комментарий Поделиться на других сайтах More sharing options...
jdo Опубликовано: 29 сентября 2021 Поделиться Опубликовано: 29 сентября 2021 @Utka Если сделать CLI (интерфейс командной строки) обертку над API то тогда не нужно будет изобретать GUI. 2 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас