Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 27.05.2019
Сообщений: 14

Что создавать на Python?

15.07.2019, 23:02. Показов 1979. Ответов 11

Студворк — интернет-сервис помощи студентам
Здравствуйте,

Я начинающий программист, совсем зеленый, и пока немного изучил язык python начиная от 3ей версии. Изучал я его на курсах от института в своем городе. После того как курс закончился, я хотел что то создавать уже дома, но возникла проблема, я вообще не знаю что мне создать. То есть, на курсах нас сначала обучили базовым вещам, потом каждый должен был выполнить какое то простое задание на протяжении всего курса(после выполнения давалось другое задание) и то как мы его выполним зависело лишь от нас. А теперь, у меня нет никакого задания и я просто не знаю что создавать что бы тренировать свои навыки и улучшить свои знания.

Если в кратце:

1.Какие программы лучше подходят для Python?
2.Как тренироваться новичку?
3.Какие задания сейчас вообще распространены на фрилансе по программированию?(В не зависимости от языка программирования, буду благодарен если вместе с распространенными заданиями, вы скажите на каком языке их удобнее выполнять)

Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.07.2019, 23:02
Ответы с готовыми решениями:

Как удобнее создавать и вставлять модули Python?
Здравствуйте, основная папка, в которой я работаю, находится на диске D, а папка с модулями на диске C. Если я запилил модуль, но потом мне...

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

Что лучше? создавать формы в Run_time или создавать в Design режиме.
(Excel) У меня 11 разных форм.С многими контроль-s. Поделитесь опытом 1.-Для быстрой загрузки файла при открытии и 2.-Для...

11
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
16.07.2019, 07:53
Goooooooooooooooooogle:
веб-разработка;
data science: машинное обучение, анализ данных и визуализация;
автоматизация процессов.

Цитата Сообщение от North_wind Посмотреть сообщение
2.Как тренироваться новичку?
имхо, лучшая тренировка - реальный проект (я так учил python, включая основы), а не решение 100500 задач, которые приводят к 100499 новым темам на форуме.

Цитата Сообщение от North_wind Посмотреть сообщение
3.Какие задания сейчас вообще распространены на фрилансе по программированию?(В не зависимости от языка программирования, буду благодарен если вместе с распространенными заданиями, вы скажите на каком языке их удобнее выполнять)
можно глянуть на сайте фриланса.
2
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
16.07.2019, 11:17
Ну вот же, первая ссылка, не ленись.

https://yandex.ru/turbo?text=h... F340894%2F
1
60 / 86 / 16
Регистрация: 25.03.2019
Сообщений: 235
16.07.2019, 17:22
Цитата Сообщение от North_wind Посмотреть сообщение
но возникла проблема, я вообще не знаю что мне создать.
Обычно новички начинают искать подобные задачи опасаясь, что с серьезной задачей они не справятся. Тут разгадка простая - пишите то, что вам на самом деле нужно. Тогда будет достаточно мотивации для преодоления сопутствующих сложностей.
Напишите, например, скрипт для группового переименования файлов, с целью удаления пробелов и прочих "уникальных" символов. Относительно просто и в быту полезно. Или скрипт бэкапа каких-нибудь файлов.
2
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
17.07.2019, 08:02
Соглашусь с ответомYuri197, одни из моих первых программ были направлены на автоматизация каких то действий. Например: программа создающая бекап всех файлов внутри папки, сохраняющих в zip архиве. Далее, ставишь более сложные задачи. Например подключение яндекс диска, как сетевого и небольшое окошко с окном ввода логина и пароля, и кнопками подключить и отключить. Далее весьма интересно создавать ботов, для телеграмм и прочих подобных приложений (есть куча готовых библиотек, которые делают эту задачу весьма простой). Удачи в начинаниях.
1
 Аватар для pazurs
33 / 26 / 8
Регистрация: 01.04.2017
Сообщений: 118
18.07.2019, 00:11
Цитата Сообщение от North_wind Посмотреть сообщение
.Какие задания сейчас вообще распространены на фрилансе по программированию?
https://www.weblancer.net/jobs/
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
18.07.2019, 17:15
Цитата Сообщение от North_wind Посмотреть сообщение
3.Какие задания сейчас вообще распространены на фрилансе по программированию?(В не зависимости от языка программирования, буду благодарен если вместе с распространенными заданиями, вы скажите на каком языке их удобнее выполнять)
Питон нужен новичку, что бы в принципе научиться программированию. Что бы зарабатывать на фрилансе, смотрите фриланс, на что там спрос. Если не ошибаюсь в основном там спрос на веб дизайн сайтов и на работу с 1С. Но лучше полазайте там сами. и не просто по ссылке, которую Вам дали, а зайдя на главную страницу сайта. Посмотрите какие там разделы и полазайте по разделам.
Если же Вы хотите лучше усвоить питон, и научиться создавать на нем проекты, то прочитайте главу 1 из книги
Лутц М. Программирование на Python. Том 1 (4-е издание, 2011)

Добавлено через 25 минут
North_wind, Изучив питон на уровне книги Лутц М. Изучаем Python (4-е издание, 2011)
и первую главу в Лутц М. Программирование на Python. Том 1 (4-е издание, 2011), а так же используя в этой книге в качестве справочника раздел по созданию графического интерфейса с помощью модуля tkinter, я для практики создал для себя "Телефонный справочник", который мне реально полезен.
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
# файл *.pyw (расширение .pyw необходимо для подавления окна DOS)
 
from tkinter import *                              # импорт объектов для графики
import shelve                                      # импорт модуля для работы с базой данных 
 
class PhoneBook:
    # класс Телефонная книга
    def __init__(self, nameBook, dicRec={}):
        # метод инициализации атрибутов экземпляров класса  и передача в метод значений для атрибутов
        self.nameBook = nameBook                   # инициализация атрибута Имя книги
        self.dicRec = dicRec                       # перечень записей в виде словаря, по умолчанию пустой
    def loadBook(self):
        # загрузка записей из базы данных
        db = shelve.open(self.nameBook)            # открытие базы данных (имя берется из атрибута nameBook класса)
        self.dicRec = dict(db.items())             # загрузка записей из базы данных в атрибут dicRec класса (в словарь класса)
        db.close()                                 # закрытие базы данных
    def saveBook(self):
        # сохранение записей в базе данных
        db = shelve.open(self.nameBook)            # открытие базы данных
        for (key, record) in self.dicRec.items():  # запись содержимого из 
            db[key] = record                       # словаря класса в базу данных
        db.close()                                 # закрытие базы данных
 
class PhoneRec:
    # класс Запись
    def __init__(self, keyRec, char, label, phone, familyName, comment, delR=''):
        # инициализация атрибутов экземпляров класса
        self.keyRec = keyRec                       # ключ записи
        self.char = char                           # буква, на странице которой находится запись
        self.label = label                         # метка, к чему относится запись
        self.phone = phone                         # телефон
        self.familyName = familyName               # Ф.И.О.
        self.comment = comment                     # комментарий
        self.delR = delR                           # служебное поле для пометки записи:
                                                   # ''- видимая, 'с' - скрытая, 'у' - удаляемая
 
fieldnamesRec = ('keyRec', 'char', 'label', 'phone', 'familyName', 'comment', 'delR')  # кортеж имен полей в записи
activCh = 'А'                                      # буква, актмвная на текущий момент
typeRec = ''                                       # тип выводимых на экран записей, '' - открытые, "с" - скрытые
dicRem = {}                                        # словарь оставшихся не выведенными записей
 
def onDeleteRequest():
#    print('Got wm delete') # щелчок на кнопке X в окне: можно отменить или перехватить
    saveRec()
    window.destroy()         # возбудит событие <Destroy>
#def doRootDestroy(event):
#    print('Got event <destroy>') # для каждого виджета в корневом окне
def makeWidgets():
    # создание графической формы
    global entriesRec, entRec, lab1, alph          # перечень глобальных переменных, которые будут использоваться и за пределами функции
    entRec = {}                                    # словарь, в который будут заносится объекты ввода entFind (поиск) и entKeyRec (ключ)
    window = Tk()                                  # создание главного окна
    window.title('Телефоны')                       # заголовок окна
    window.geometry('1260x600+0+0')                # размеры окна
#    window.bind('<Destroy>', doRootDestroy)              # для корневого и дочерних 
    window.protocol('WM_DELETE_WINDOW', onDeleteRequest) # на кнопке X окна (перехватывает нажатие кнопки Х)
    form1 = Frame(window)                          # создание внутри окна window контейнера form1
    form1.pack()
    lab1 = Label(form1, text=activCh, fg="#eee", bg="#333", width=5)  # метка, показывающая
    lab1.pack(side=LEFT)                                              # активную букву
    Label(form1, text='  ', width=30).pack(side=LEFT)                 # вспомагательная пустая метка для улучшения расположения
    alph = ["А", "Б", "В", "Г", "Д", "Е", "Ж", "З", "И", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", 
            "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Э", "Ю", "Я"]         # список букв
    for i in range(len(alph)):                     # создание кнопок с буквами
        Button(form1, text=alph[i], command=(lambda x=alph[i]: fetchChr(x))).pack(side=LEFT)
    ent = Entry(form1, width=27)                   # поле ввода для поиска
    ent.pack(side=LEFT)
    entRec['entFind'] = ent                        # поместить объект поля ввода в словарь entRec
    Button(form1, text="Поиск", command=fetchFind).pack(side=LEFT)     # создание кнопки Поиск
 
    form2 = Frame(window)                          # создание внутри окна window контейнера form2
    form2.pack()
    entriesRec = {}                # словарь, для занесения в него объектов Entry ячеек таблицы ввода записей
    for (ix, label) in enumerate(fieldnamesRec): # создание надписей заголовков столбцов таблицы
        lab = Label(form2, text=label)
        lab.grid(row=2, column=ix)
    for i in range(1, 26):         # создаются ячейки таблицы для ввода записей
        for (ix, label) in enumerate(fieldnamesRec):
            if label == 'keyRec' or label == 'char' or label == 'delR':  # выделяются столбцы, которые потом будут иметь особый режим доступа
                ent = Entry(form2, state='normal', width=6)
            else:
                ent = Entry(form2, width=40)
            ent.grid(row=i+2, column=ix)
            entriesRec[label+str(i)] = ent   # объекты ячеек таблицы заносятся в словарь, причем к имени 
                                             # столбца ячейки добавляется номер строки, 
                                             # тем самым однозначно определяются координаты ячейки,
                                             # что бы к ней обращаться
    form3 = Frame(window)                            # создание внутри окна window контейнера form3
    form3.pack()
    Button(window, text="Следующая страница", command=fetchNext).pack()  # кнопка Следующая страница
    Label(window, text='      ', width=10).pack(side=LEFT)       # вспомогательная пустая метка
    labKeyRec = Label(window, text='keyRec').pack(side=LEFT)     # надпись перед полем ввода номера ключа
    ent = Entry(window, width=10)                                # поле ввода номера ключа
    ent.pack(side=LEFT)
    entRec['entKeyRec'] = ent             # занесение объекта поле ввода номера ключа в словарь entRec
    Button(window, text="Скрыть", command=hideRec).pack(side=LEFT)             # кнопка Скрыть (запись)
    Button(window, text="Показать скрытые", command=fetchHide).pack(side=LEFT) # кнопка Показать скрытые
    Button(window, text="Открыть", command=openRec).pack(side=LEFT)            # кнопка Открыть (запись)
    Label(window, text=' ', width=5).pack(side=LEFT)                           # вспомогательная пустая метка
    Button(window, text="Удалить", command=delKeyRec).pack(side=LEFT)          # кнопка удалить (запись)
    Label(window, text='      ', width=30).pack(side=LEFT)                     # вспомогательная пустая метка
    btns = Button(window, text="Сохранить", command=interSave).pack(side=LEFT)   # кнопка Сохранить (страницу)
    Label(window, text='      ', width=20).pack(side=LEFT)                     # вспомогательная пустая метка
    Button(window, text="Выход", command=fin).pack(side=LEFT)                  # кнопка Выход (из программы)
    return window                                              # функция makeWidgets возвращает окно window
 
def clear_sheet():
    # очистка листа
    for i in range(1, 26):
        for field in fieldnamesRec:
            if field == 'keyRec' or field == 'delR':              # для очистки полей keyRec и delR,
                entriesRec[field+str(i)].config(state='normal')   # нужно открыть их для записи
                entriesRec[field+str(i)].delete(0, END)
                entriesRec[field+str(i)].config(state='readonly')
            else:
                entriesRec[field+str(i)].delete(0, END)         # очистка остальных полей
def fetchChr(ch):
    # выбрать записи на букву ch
    global activCh, typeRec, lab1
    saveRec()                      # предварительно сохранить предыдущую страницу
    typeRec = ''                   # выбор для буквы делать только из открытых записей
    activCh = ch                   # сделать ch текущей буквой
    lab1.config(text=activCh)      # написать, для какой буквы выводятся записи
    dicRecChr = {}                 # словарь, в который помещаются выбранные записи
    for key in t1.dicRec.keys():      # выбор записей и помещение их в словарь
        if t1.dicRec[key].char == ch:
            dicRecChr[key] = t1.dicRec[key]
    fetch(dicRecChr)                        # вывод записей в таблицу формы
def interSave():
    # принудительное сохранение страницы и вывод страницы для текущей буквы
    fetchChr(activCh)
def fetchHide():
    # вывод скрытых записей
    global typeRec, lab1
    saveRec()
    lab1.config(text='скр')
    typeRec = 'с'
    fetch(t1.dicRec)
def fetch(dicR):
    # вывод записей из заданнго словаря
    global dicRem                        # словарь записей, оставшихся не выведенными
    clear_sheet()                        # очистка таблицы
    count = 1                            # счетчик показывающий номер строки, в которую выводится запись
    dicRe = dicR.copy()                  # словарь, ведущий учет записей, которые еще не выведены
    while count <= 25 and len(dicRe):    # в цикле, заполнение строк таблицы записями
        for key in dicR.keys():            # в цикле вывод записи удовлетворяющей условию
            if dicR[key].delR == typeRec:
                record = dicR[key]                   # запись для вывода
                for field in fieldnamesRec:          # в цикле последовательное заполнение полей в строке
                    if field == 'keyRec' or field == 'delR':    # поля, которые необходимо открыть для записи
                        entriesRec[field+str(count)].config(state='normal')
                        entriesRec[field+str(count)].insert(0, getattr(record, field))
                        entriesRec[field+str(count)].config(state='readonly')
                    else:
                        entriesRec[field+str(count)].insert(0, getattr(record, field))  # все остальные поля
                count += 1         # переход к следующей строке таблицы
                dicRe.pop(key)     # удаление записи, которая выведена из словаря учета оставшихся записей           
                if count > 25:     # если все строки таблицы заполнены, то выход из цикла while
                    break
            else:
                dicRe.pop(key) # удаление из словаря учета записи, которая не удовлетворяет условию вывода в таблицу
    dicRem = dicRe.copy()      # словарь записей, оставшихся не выведенными
 
def fetchNext():
    # вывод на следующей странице записей, оставшихся не выведенными
    saveRec()
    fetch(dicRem)
 
def delKeyRec():
    # физическое удаление из базы данных записи, которая указана в ячейке entKeyRec
    key = entRec['entKeyRec'].get()  # из ячейки entKeyRec берется ключ записи для удаления
    del t1.dicRec[key]               # запись удаляется из динамического словаря t1.dicRec
    db = shelve.open(t1.nameBook)    # открывается база данных
    del db[key]                      # указанная запись физически удаляется из базы данных
    db.close()                       # база данных закрывается
    for i in range(1, 26): # ищется строка таблицы с этой записью, и помечается как удаленная, 
        if entriesRec['keyRec'+str(i)].get() == key:         # что бы потом при сохранении страницы,
            entriesRec['delR'+str(i)].config(state='normal') # она не была вновь занесена в базу данных
            entriesRec['delR'+str(i)].insert(0, 'у')
            entriesRec['delR'+str(i)].config(state='readonly')
    entRec['entKeyRec'].delete(0, END)            # очищается ячейка, содержащая номер удаляемой записи
def hideRec():
    # пометить как скрытую
    key = entRec['entKeyRec'].get()  # из ячейки entKeyRec берется ключ записи для сокрытия
    for i in range(1, 26):           # ищется строка таблицы с этой записью, и помечается как скрытая
        if entriesRec['keyRec'+str(i)].get() == key:
            entriesRec['delR'+str(i)].config(state='normal')
            entriesRec['delR'+str(i)].insert(0, 'с')
            entriesRec['delR'+str(i)].config(state='readonly')
    entRec['entKeyRec'].delete(0, END)           # очищается ячейка, содержащая номер скрываемой записи записи
def openRec():
    # открыть скрытую запись
    key = entRec['entKeyRec'].get()   # из ячейки entKeyRec берется ключ записи для открытия
    for i in range(1, 26):            # ищется строка таблицы с этой записью, и помечается как открытая
        if entriesRec['keyRec'+str(i)].get() == key:
            entriesRec['delR'+str(i)].config(state='normal')
            entriesRec['delR'+str(i)].delete(0, END)
            entriesRec['delR'+str(i)].insert(0, '')
            entriesRec['delR'+str(i)].config(state='readonly')
    entRec['entKeyRec'].delete(0, END)           # очищается ячейка, содержащая номер открываемой записи 
 
def fetchFind():
    # поиск записей по заданной строке
    global lab1
    saveRec()
    clear_sheet()
    lab1.config(text='поиск')      # сигнализирует о режиме поиска
    strF = entRec['entFind'].get() # строка для поиска берется из ячейки entFind
    dicFind = {}                   # словарь, для занесения в него найденных записей
    for key in t1.dicRec.keys():   # в тлефонном справочнике ищутся записи содержащие искомую строку
        record = t1.dicRec[key]
        for field in fieldnamesRec:
            if (field != 'keyRec' and field != 'char' and field != 'delR' and # поиск в полях, за исключением перечисленных
                getattr(record, field).find(strF) != -1):
                dicFind[key] = record
                break
    fetch(dicFind)                  # вывод найденных записей
def saveRec():
    # сохранение текущей страницы
    global typeRec
    for i in range(1, 26):       # просмотр строк и при наличии хотя бы в одном поле строки данных, сохранение ее
        key = entriesRec['keyRec'+str(i)].get() # проверка наличия в строке ключа
        if entriesRec['delR'+str(i)].get() == 'у': # записи помеченные как удаленные пропускаются
            continue
        elif key:                # иначе, если запись не удаленная и с ключом, то она перезаписывается
            record = t1.dicRec[key]
            for field in fieldnamesRec:
                setattr(record, field, entriesRec[field+str(i)].get())
            t1.dicRec[key] = record
        else: # иначе, если в строке нет ключа, но в одном из полей есть данные, то создается запись-экземпляр
            existRec = False                                               # и помещается а словарь t1.dicRec
            for field in fieldnamesRec:
                if entriesRec[field+str(i)].get(): existRec = True # Если существует запись в поле на этой строке
            if existRec:     # если данные в строке существуют, то создается запись
                if entriesRec['char'+str(i)].get():  # если поле буквы не пусто, то в запись заносится эта буква
                    char = entriesRec['char'+str(i)].get()
                else:              # иначе в запись заносится буква, являющаяся на данный момент активной
                    char = activCh
                label = entriesRec['label'+str(i)].get()             # заполняются переменные
                phone = entriesRec['phone'+str(i)].get()             # для формирования записи
                familyName = entriesRec['familyName'+str(i)].get()
                comment = entriesRec['comment'+str(i)].get()
                if len(t1.dicRec)>0: # если телефонный справочник не пуст, то к максимальному значению ключа 
                    L = sorted(t1.dicRec.items(), key=lambda item: int(item[0]))  # прибавляется единица
                    keyRec = str(int(L[-1][0]) + 1)
                else:        # иначе записи присваивается ключ равный 1
                    keyRec = "1"
                record = PhoneRec(keyRec, char, label, phone, familyName, comment) # создается запись, экземпляр класса PhoneRec
                t1.dicRec[keyRec] = record     #  и записывается в словарь t1.dicRec
    t1.saveBook()  # словарь t1.dicRec сохраняется во внешней базе данных "Телефоны"
 
def fin():            # сохранение перед закрытием окна
    saveRec()
    window.destroy()
 
if __name__ == '__main__':
 
    t1 = PhoneBook("Телефоны")   # создание экземпляра класса PhoneBook
    t1.loadBook()                # загрузка внешней базы данных в словарь t1.dicRec,
                                 # с которым в дальнейшем будет производится вся работа, 
                                 # перед выгрузкой потом назад в базу данных
    window = makeWidgets()       # создание формы
    fetchChr('А')                # вывод в качестве стартовой страницу с буквой "А"
    window.mainloop()            # передача управления форме

Теперь вот думаю, чем еще заняться.
То ли сделать каталог своих книг (их много), то ли базу данных своих вещей, как на складе. Я уже забываю какая мелочевка из вещей у меня валяется в квартире и на даче.
1
3 / 3 / 0
Регистрация: 18.07.2019
Сообщений: 47
20.07.2019, 11:19
Сам был в таком же положении. Потом нашел книгу "ИЗУЧАЕМ PYTHON, программирование игр, визуализация данных, веб-приложения" - Эрик Метиз. В этой книге есть три проекта разной направленности. Выполнив их все можно выбрать что для лучше всего подходит
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
20.07.2019, 16:59
Цитата Сообщение от North_wind Посмотреть сообщение
А теперь, у меня нет никакого задания и я просто не знаю что создавать что бы тренировать свои навыки и улучшить свои знания.
В этом разделе форума сплошные задания. Пытайтесь их самостоятельно решать, Если же оказывается, что задание Вам не под силу, то смотрите, как его решают другие.
Я набрался практики в использовании питона именно на этом форуме.
1
6 / 7 / 0
Регистрация: 19.06.2019
Сообщений: 169
20.07.2019, 18:27
Спрошу тогда и я тут ,чтоб не плодить темы.Изучаю с нуля питон в мобильном приложении SoloLearn,потом планирую перейти на Лутца. Кто сталкивался с этим приложением? Оно эффективно? Или лучше изучать сразу Лутца?
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
20.07.2019, 20:54
Андрей_Я, Я кроме Лутца больше ничего не изучал. Но Лутц много лет преподает питон студентам и потому материал излагает очень подробно и полно. Одна только первая книга содержит 1280 страниц. Поэтому за него имеет смысл браться, только если Вы достаточно усидчивый и хотите досконально изучить питон.
0
 Аватар для pazurs
33 / 26 / 8
Регистрация: 01.04.2017
Сообщений: 118
20.07.2019, 22:03
SoloLearn, Лутца и всех остальных, Гугл,Гугл,Гугл, и все одновременно.
Цитата Сообщение от Viktorrus Посмотреть сообщение
Я кроме Лутца больше ничего не изучал.
А мы вот Лутца бегло просмотрели, и не паримся, К тому же такие вещи как пандас, пикьюти, тензор флов и иже с ними Лутц не освещает(Могу ошибаться)
Цитата Сообщение от Андрей_Я Посмотреть сообщение
Кто сталкивался с этим приложением? Оно эффективно?
на 4 по пятибальной, но в целом проект неплохой.
Нужно желание, а информация сама вас найдет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.07.2019, 22:03
Помогаю со студенческими работами здесь

Что можно создавать на PHP?
День добрый! Вопрос может быть не совсем нормальный. Но, я например, смотрю в инете, информацию, на что способен JS, какие фишки есть,...

Что лучше учить Python 2 или Python 3?
хочу начать учить питон но полазив в нете, частенько попадалась информация что вроде как 2 будет долго жить и в то же время много кто на 3...

Что нужно, чтобы создавать 2d игры
Подскажите нубу с чего начать что скачать,не понаслышке знаком с делфи, С++. Тока без матов, если можно. Вообще интересуюсь созданием...

Что лучше и выгоднее создавать для программиста
я как бы начинающий программист хочу узнать что лучше и выгоднее создавать для программиста игры или программ язык си шарп

Что такое формы в Visual c++ и как их создавать?
Здравствуйте, помогите девушке, пожалуйста!(( Научите создавать формы на visual c++ объясните где настраивать их дизайн!( У меня есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru