Garry's Mod

Garry's Mod

66 ratings
Программируем на Python | Python для Начинающих
By Dr. L
НЕ душное руководство по программированию на питоне.
2
2
2
   
Award
Favorite
Favorited
Unfavorite
Введение
Привет читатель!
Рад что Ты решил кликнуть именно на это руководство и узнать что то новое :3
В этом руководстве Ты узнаешь что то новое в сфере программирование, а именно - ты изучишь язык программирования Python.
Данное руководство отлично подойдет для новичков, и тех, кто уже немного шарит за этот язык программирования.

Данное руководство будет длинным, так что можете заварить себе чаю!
Введение в Python
Python — высокоуровневый, интерпретируемый язык программирования с динамической типизацией и автоматическим управлением памятью. Он известен своей читаемостью кода и поддержкой различных парадигм программирования, включая процедурное, объектно-ориентированное и функциональное программирование.

Если вы новичок - то для вас все эти парадигмы, ООП, автоматическая типизация и т.д. скорее всего что то новое.
Можете не замарачиватся над этим, это все мы рассмотрим в следующих главах.


Если говорить проще - Python — это язык программирования, который легко читать и писать. Он поддерживает разные подходы к программированию и управляет памятью автоматически.

Особенности Python:
  • Простота и лаконичность синтаксиса (легкий, отлично подходит для новичков)
  • Большая стандартная библиотека (очень много функций без сторонних библиотек)
  • Кроссплатформенность (работает на разных OS)
  • Активное сообщество (почти всегда можно найти помощью)

Установка Python
Как я говорил ранее, python - это кроссплатформенный язык программирования.
Это значит, что на питоне можно программировать независимо от платформы (точнее операционной системы).

Windows
  • Перейди на официальный сайт python.org и скачай последнюю версию Python.
  • Запусти установщик и обязательно отметь опцию "Add Python to PATH".
  • Следуй инструкциям установщика.

macOS
Обычно, python предустановлен на MacOS.
Для MacOS есть 2 варианта загрузки:
  • 1. Через оффициальный сайт
    • Перейди на официальный сайт python.org и скачай последнюю версию Python для MacOS.
    • Запусти установщик и обязательно отметь опцию "Add Python to PATH".
    • Следуй инструкциям установщика.
  • 2. Через Homebrew:
    brew install python

Linux
На линуксе обычно питон также предустановлен.
Используй пакетный менеджер своей дистрибуции. Например, для Ubuntu:
sudo apt update sudo apt install python3

Низнаю как вы, но лично я предпочитаю кодить на линуксе.

Выбор IDE
IDE - это среда где вы будете писать код.

Есть много специализированных IDE для написания кода на питоне:
  • PyCharm - отличная бесплатная IDE для написания кода специально на питоне.
  • Spyder - тоже бесплатная IDE для питона, но специализированная для Data Science.
  • Thonny - так же бесплатная IDE для питона, простой интерфейс, подойдет для новичков.

Другие способы писать код
Так же, код на питоне можно писать не только в специализированных IDE, но и в простых текстовых редакторах.
К примеру обычный блокнот на Windows, или консольный редактор Nano на линуксе, тоже можно использовать для написания кода на питоне.

Но есть более специализированные текстовые редакторы, к примеру:
  • Visual Studio Code - отличный кросплатформенный текстовый редактор с поддержкой расширений, на нем можно писать код почти под любой язык программирования.
  • Notepad++ - тоже текстовый редактор, более простой, но не обделен функционалом!

P.s. Текстовые редакторы отличаются от IDE тем, что обычно не привязанны к определённому языку программирования.

Я, в рамках данного руководства, буду использовать Visual Studio Code для написания кода, но вам рекомендую использовать PyCharm.
Первая программа
Мы не будем сразу углублятся в тонкости языка Python, и просто напишем нашу первую программу, которая выводит "Hello World!" в консоль.

Зайди в свою IDE, и создайте файл hello.py (можете создать какой угодно, лишь бы на конце было .py(англ))
К слову, все файлы с кодом питона заканчиваются на .py.

Откройте файл, созданный вами, и перепишите\вставьте туда этот код:
print("Hello world!")

Это и будет наша программа!

Чтобы запустить его, можно использовать несколько путей:
  • Если вы используете IDE, к примеру PyCharm:
    • Просто нажмите кнопку Run (стрелочка), которая находится справа сверху.
  • Если вы используете текстовый редактор, по типу VSC:
    • Откройте терминал (консоль).
    • Перейдите в директорию (папку) с вашим файлом с кодом.
    • Напишите команду python hello.py (или python3 hello.py) (hello.py - файл, который вы создали)

После этого вы должны увидеть в консоли (или в окне отладки, если вы используете IDE) строку:
Hello world!

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


Подробный разбор будет в следующей главе.
Разбор первой программы
В этой главе мы подробно разберем программу и код из предыдущей главы.

В начале главы я просил вас создать файл hello.py.
В этом файле hello - это просто название, главное, чтобы оно было на англ и без всяких пробелов, называть можете как хотите, хоть main.py, хоть sus.py, без разницы.

Главное запомните:
Хорошо:
  • В имени файла только англ буквы.
  • Нет пробелов.
  • По имени файла можно понять что делает код.
  • Имя не очень длинное.
  • main.py, hello.py, tensor.py, vector.py, math.py
Плохо:
  • Написанно не на английском языке (меин.py)
  • Есть пробелы (hello world.py)
  • Слишком длинное название (myFirstProgramHelloWorld.py)
  • Не отражает суть программы (файл hello.py, но код для сложения)

.py - это расширения кода для питона.
По сути, не обязательно делать окончание файла таким, его все равно можно запустить из консоли с питоном, к примеру можете создать файл main (без .py), написать туда код
print("Hello world!")
И попробуйте запустить его в консоли:
python main
И ваш код все равно сработает, но по факту, будет не понятно что за файл, пока го не откроешь, особенно если вы работаете в команде, так что .py, это указатель на то, что файл содержит код для питона.

Разбор кода:
Вот мы и пришли к разбору кода!

Здесь мы разберем код
print("Hello world!")

Данный код просто выводит в консоль "Hello world!" (что, я думаю, очевидно).
Тут print() - это функция, которое выводит сообщение в консоль.
В скобках находятся аргументы для функции, это данные, с которыми будет работать функция print().
Разные функции принимают разные данные, но конкретно print() принимает данные, которые надо вывести в консоль, это все что делает функция.

"Hello world!" - это данные которые нужно вывести.
Все данные в питоне имеют свой тип данных, хоть обычно они не определяются явно как в С++, за нас это делает интерпритатор.
Конкретно у "Hello world!" тип данных string (строка)

Сейчас не надо обо всем заморачиватся! Просто запомните что print() выводит какие-то данные!!!

Просто запомните что есть функции и у них есть аргументы, а так же есть типы данных, всё это мы разберем в этом руководстве!

Самое главное из разбора!!
  • print() - функция.
  • "Hello world!" - Данные, которые нужно вывести, с типом string.
Основные концепции
Как я уже говорил, в питоне есть функции, аргументы, и типы данных.
Но это все - всего лишь капля в море.

Для начала разберём типы данных.

Типы данных
В питоне есть типы данных, хоть они и не указываются на прямую как в С++ или Си, ну или же как в других языках, в питоне они определяются автоматически интерпритатором.

В питоне есть несколько основных типо данных:
  • Числа: int, float, complex (обычные числа и чиспла с плавующей точкой)
  • Строки: str (строки, к примеру "Hello world")
  • Булевы значения: bool (булевые(логические) значение, либо True, либо False)
  • Списки: list
  • Кортежи: tuple
  • Словари: dict
  • Множества: set

Примеры:
# Числа x = 10 # int y = 3.14 # float z = 2 + 3j # complex # Строки name = "Python" # Булевы is_active = True # Список fruits = ["яблоко", "банан", "вишня"] # Кортеж coordinates = (10.0, 20.0) # Словарь person = {"имя": "Алексей", "возраст": 30} # Множество unique_numbers = {1, 2, 3, 4, 5}

Разные типы данных используются дла разных задач, все из них мы разберем позже.
И всё сразу запоминать не надо!!

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

Операции с переменными:
Мы можем проводить несколько операций с переменными, а именно:
  • Создать, и присвоить значение этой переменной.
  • Получить значение переменной.
  • Заменить значение переменной.

В питоне нельзя создавать переменные без значения, к прмиеру как в С++ int x;!!!

Чтобы объявить переменную, достаточно написать:
<имя переменной> = <значение>
Это и есть основной синтаксис оьъявления переменных.

Главное запомните!
  • Нельзя называть переменные ключивыми (зарезервированными) словами, по типу if else class и тп.
  • Нельзя использовать имена встроенных функций и модулей, по типу print, str, int и тп.
  • Переменные не могут начинатся с цифры! (к прмиеру 1var = 1), однако они могут содержать цифры в других местах.
  • Имена переменных не могут иметь спец. символы по типу точек, пробелов и тп. Однако могут иметь в себе "_" знак нижнего подчеркивания.

Примеры объявления переменных:
x = 5; # int catName = "Tofca" # string pi = 3.14 # float

P.s. Привет тофке :3


Операторы
Python поддерживает различные операторы:

  • Арифметические: +, -, *, /, //, %, ** (сложение, вычетание, умножение, деление, целочисленное деление, остаток от деления, возведение в степень)
  • Сравнения: ==, !=, >, <, >=, <= (если равен, если НЕ равен, если больше, если меньше, если больше ИЛИ равно, если меньше ИЛИ равно)
  • Логические: and, or, not (логические И, ИЛИ, НЕ)
  • Присваивания: =, +=, -=, и т.д. (присваивание значения переменным)

Пример:
a = 5 b = 2 # Арифметические операторы print(a + b) # 7 print(a ** b) # 25 # Сравнение print(a > b) # True, если a болье чем b # Логические print(a > 3 and b < 5) # True


Управляющие конструкции
Тут мы включаем логику и думаем логично...


Используются для выполнения различных блоков кода в зависимости от условий.
(Условия по типу: выполнить этот код, если a равен b)

P.s. забыл сказать, все в коде, что идет после #, это коментарий, он не выполняется программой, там можно оставлять заметки.

Пример:
age = int(input("Введите ваш возраст: ")) # функция для ввода через консоль if age > 18: # проверяем, если возраст (age) больше 18, то выполняем код ниже print("Вам можно певко))") # код сработает, если условие строкой выше вернет True elif age == 18: # elif (else if) срабатывает, если прошлое условие вернуло False print("Да, вам можно певко, но иногда, когда вам 18, не продают") else: # если все прошлые условия вернули False, то мы с помощью else переходим к этому блоку кода в любом случае print("ВАМ НЕЛЬЗЯ, НАЙН, ПЛОХО!!!")

Тернарный оператор
Тернарный оператор в Python позволяет сократитьусловную конструкцию, которые состоят и- простых условий.
За счет них, можно записать условные конструкции компакино, в одну строку.
Пример простого условия
ii condition: result = 1 else: result = 0/code] Мы можем сократить это условие до одной строки, используя тернарный оператор:
result = 1 if condition else 0
Этот код делает то же самое, что и предыдущий, но записан гораздо компактнее.
Условие с вложенными тернарными операторами
Также, питон позволяет нам использовать тернарные оператор, для вложенных условных конструкций! Это может быть полезно, когда нужно обработать несколько вариантов результата. Пример:
x = 10 result = "Positive" if x > 0 else "Negative" if x < 0 else "Zero" print(result)
В этом примере мы проверяем, положительное ли число, отрицательное или равно нулю, и записываем соответствующий результат.
Сокращение условий с выводом в print
Часто бывает полезно применять тернарный оператор непосредственно в функции print для более компактных и чистых выводов. Например:
print(1 if True else 0)
Или для вывода более сложных условий:
x = -5 print("Positive" if x > 0 else "Negative" if x < 0 else "Zero") # Вывод: Negative
Как видно, тернарный оператор позволяет сократить код, улучшив его читабельность и упрощая обработку условий.
Циклы
В циклах мы выплняем один и тот же код (в рамках цикла) определённое (иногда неопределённое) количество раз. Есть несколько стандартных цикла:
  • for - используется для перебора элементов в коллекции.
  • while - выполняет блок кода, пока условие истинно.
Примеры: Цикл for
fruits = ["яблоко", "банан", "вишня"] # просто коллекция с какими то данными for fruit in fruits: print(fruit)
Теперь разберём:
  • fruits = ["яблоко", "банан", "вишня"] - просто содержит в себе какие то данные
  • for fruit in fruits: - цикл for, с помошью него мы перебираем элементы поочерёдно, каждый цикл мы берём элемент, помещаем его в переменную fruit (её можно назвать как угодно), и после выполнения кода в цикле переходим к следующему элементу в коллекции.
  • print(fruit) - здесь мы берем нашу переменную fruit, и выводим в консоль её значение.
Цикл while
count = 0 while count < 5: print(count) count += 1; # увеличивает count на 1, можно записать как count = count + 1 или count++
Теперь разберём:
  • count = 0 - это нас счетчик.
  • while count < 5: - цикл while, с условием, что он будет работать пока переменная count < 5.
  • print(count) - выводим значение переменной count.
  • count += 1 - увеличиваем наш счетчик на единицу.
В целом, это вся основная логика условных операторов, и циклов.
Функции
Функции позволяют организовать код в переиспользуемые блоки, то есть, можно организовать и оптимизировать код с помощью функций.

Основной синтаксис функций:
def <имя функции>(аргументы) : <тело функции> return <значение> # не обязательно

А теперь разберём по частям:
  • Имя функции - имя, по которой мы будет к ней обращаться.
  • Аргументы - данные, с которыми будет работать функция, в целом, можно обойтись и без них.
  • Тело функции - основной код функции.
  • return <значение> - значение, которое будет возвращать функция. В целом, она может ничего и не возвращать.

Пример функции
def add(a, b): return a + b
функция для сложения 2 чисел

def greet(name): print(f"Привет, {name}!")
Принимает значение name и выводит в консоль сообщение с приветствием.

Ещё прошу обратить внимание на строку f"Привет, {name!}", а именно на знак "f" перед строкой.
Это - модификатор для нашей строки, с помощью него мы можем в текст вставить фигурные скобки {}, и передать туда значение, которое потом выведется c cообщением.
Списки и генераторы
Списки в Python — это один из самых универсальных типов данных. Они позволяют хранить коллекции элементов, с которыми можно легко работать. Однако ещё более мощным инструментом являются генераторы списков.

Пример простого списка:
numbers = [1, 2, 3, 4, 5]

Однако намного эффективнее создавать списки с помощью генераторов. Например, если нам нужно создать список квадратов чисел:
squares = [x**2 for x in range(1, 6)] print(squares)

Вывод:
Вывод: [1, 4, 9, 16, 25]

Генератор списка позволяет сократить количество кода и сделать его более читабельным.
Использование map
Функция map позволяет применить заданную функцию ко всем элементам итерируемого объекта (списка, множества, и т. д.). Это помогает избежать явных циклов и ускоряет код.

Пример использования map:
numbers = [1, 2, 3, 4, 5] squares = list(map(lambda x: x**2, numbers)) print(squares)

Вывод:
[1, 4, 9, 16, 25]

Здесь мы применяем лямбда-функцию, которая возводит числа в квадрат, ко всем элементам списка numbers.
Работа с модулями и пакетами
Питон поддерживает работу с модулями и пакетми (иногда их называют библиотеками)
Модули позволяют разделять код на отдельные файлы и переиспользовать его.
Так же, с помощью менеджера пакета pip можно скачивать и использовать чужие модули и пакеты в своих проектах.

Чтобы работать с модулем, его нужно импортировать ключевый словом import.
import math print(math.sqrt(16)) # 4.0

Данный код вернёт корень числа 16.

Давайте разберём подробнее:
  • Сначала мы импортируем модуль math, с использвоанием ключевого слова import.
  • Потом мы выводим корень из числа 16, для этого мы обращаемся к модулю math и берем оттуда функцию извлечения корня из числа (sqrt), и передаем туда число, из которого мы хотим извлечь корень.

Также, мы можем испортировать из модуля только отдельные функции:
from math import pi, sin print(pi) # 3.141592.... print(sin(pi / 2)) # 1

Давайте разберём этот код:
  • Из модуля math мы импортируем функцию sin и переменную pi (число пи).
  • Выводим число пи.
  • Выводим синус половины числа пи.

Ещё вы можете создать свой модуль!
  • Создайте файл main.py и myModule.py в одной директории.
  • Напишите код в myModule.py
    def greet(name): print(f"Hello, {name}!")
  • Теперь вы можете импортировать этот модуль! Для этого откройте main.py, и напишите следующее:
    import myModule myModule.greet("Tofca")

Примите мои поздравления, вы создали Свой модуль, и импортировали его!


Структуры данных
Здесь будет все коротко и по фасту, так как все эти структуры являются массивами.

Списки
Изменяемые упорядоченные коллекции.
fruits = ["яблоко", "банан", "вишня"] fruits.append("апельсин") # добавляет в конец новый элемент print(fruits) # ['яблоко', 'банан', 'вишня', 'апельсин']

Кортежи
Неизменяемые упорядоченные коллекции.
coordinates = (10.0, 20.0) print(coordinates[0]) # 10.0

P.s. 0 - индекс элемента, в программирвоание всегда счет начинается с нуля!

Словари
person = {"имя": "Алексей", "возраст": 30} print(person["имя"]) # Алексей # Добавление нового элемента person["город"] = "Москва" print(person)

Множества
Неупорядоченные коллекции уникальных элементов.
unique_numbers = {1, 2, 3, 2, 1} print(unique_numbers) # {1, 2, 3} # Операции с множествами a = {1, 2, 3} b = {3, 4, 5} print(a.union(b)) # {1, 2, 3, 4, 5} print(a.intersection(b)) # {3}
Объектно-ориентированное программирование (ООП)
Объектно ориентированное программирование (сокр. ООП) — подход в программировании, как к моделированию обхектов, с функцией конструкторов и наследования.

Короче:
Вы можете создать объект у этого объекта будут свои переменные, методы (функции) и конструкторы.

К примеру, вы можете создать класс транспортного средства, у которого будет параметры, по типу веса, года выпуска названия и тд, и функции, к примеру для запуска этого транспортного средства, и от этого объекта можно сделать наследованный класс для автомобиля, самолета и коробля, и у всех них будут одинаковые, нследованные от родителя поля и функции, но при этом, они могут иметь свои уникальные функции и параметры.

class Dog: def __init__(self, name, age): # конструктор класса self.name = name self.age = age def bark(self): # метод класса print(f"{self.name} начал гавкать!") my_dog = Dog("Рекс", 5) print(my_dog.name) # Рекс my_dog.bark() # Рекс начал лаять

Наследование
Как я говорил ранее, классы могут наследовать другие классы, и позволяет создавать новый класс на основе существующего.
class Animal: def __init__(self, name): self.name = name def speak(self): pass class Cat(Animal): def speak(self): print(f"{self.name} мяукает") my_cat = Cat("Мурка") my_cat.speak() # Мурка мяукает.
Практика
Практика — ключ к освоению программирования. Вот несколько идей для проектов:
  • Калькулятор: Создай консольное приложение для выполнения арифметических операций.
  • To-Do List: Приложение для управления списком задач с возможностью добавления, удаления и просмотра задач.
  • Веб-скрейпер: Собирай данные с веб-сайтов с помощью библиотеки BeautifulSoup.
  • Блог: Создай веб-приложение с использованием фреймворка Django или Flask.
  • Игра: Разработай простую игру, например, "Угадай число" или "Крестики-нолики".
  • Алгоритмы: Напишите функцию для простой сортировки массива чисел, к примеру пузырьковую сортировку

Конец
Данное руководство было довольно длинным, но надеюсь вам оно понравилось!
Если вам интересна эта тема, я могу выпустить ещё руководства на более ускоспециализирвоанные темы.

Вы можете поддержать меня, поставив хорошую оценку руководству (ещё можно дать награду если не жалко :3)

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

В любом случае, спасибо что прочитали это руководство!


Другие руководства:
https://steamoss.com/sharedfiles/filedetails/?id=3401446439
https://steamoss.com/sharedfiles/filedetails/?id=3400164684
https://steamoss.com/sharedfiles/filedetails/?id=3197737260
https://steamoss.com/sharedfiles/filedetails/?id=3387288971
https://steamoss.com/sharedfiles/filedetails/?id=3389441554
https://steamoss.com/sharedfiles/filedetails/?id=3390154519
https://steamoss.com/sharedfiles/filedetails/?id=3397931731

Отдельная благодарность:
  • Blackmore - дал несколько предложений, для улучшения руководства!
18 Comments
Stere0 24 minutes ago 
спс хотел найти тутор как зафризить проп но случайно питон выучил:wd_DeadSec::steamthumbsup:
i0n1xx クール 25 minutes ago 
Поддержите пожалуйста моё руководство, буду благодарен)
Dr. L  [author] 4 Jan @ 6:32am 
Спасибо, что дали предложение для дополнения руководства, я учту ваши просьбы, и реализую их, после того, как допишу руководство по программированию на Lua. Ещё раз спасибо, за то, что поддерживаете мои руководства :)
Blackmore 4 Jan @ 6:28am 
Про списки не напечаталось почему-то(((
Blackmore 4 Jan @ 6:27am 
Рассказал бы еще людям как сокращать некоторые действия, по типу создания списков (list = - очень удобный способ, еще как помню с ним можно map использовать), print с вложенными условиями (print(1 if True else 0). А так очень хороший гайд
ツ🔥 SASopa 🔥ツ 4 Jan @ 4:59am 
Спасибо Dr. L, приятно такое слышать) (•⩊•)
Очень рад что ты заметил мой коммент, буду и дальше писать отзывы к твои руководствам, ставить лайки и добавлять в избранное. Надеюсь что с тобой всё будет в порядке. Что же ни пуха ни пера как говорится) [:
GenDir 3 Jan @ 11:06pm 
Я ничего не понял. Но в любом случае данное руководство полезно для тех кто поймёт, как это всё делается
shadexqz 3 Jan @ 12:37pm 
Спасибо бро, респект тебе, побольше бы таких. :steamthumbsup: Всё ещё удивляюсь как один человек смог написать такое длинное и полезное руководство, да ещё и так подробно, а и да есть же и другие твои руководства которые такие же классные, просто офигеть) (≧ω≦) Хочу пожелать тебе счастья, радости и здоровья, чтобы мог и дальше радовать нас своим контентом)) ( ˙꒳​˙ ) Поэтому ещё раз благодарен тебе, ты мне очень помог и не только мне но и всем нам. Буду рад если заметишь это сообщение ^-^
ня~ :3
-novid 3 Jan @ 12:31pm 
Топ, мама сказала что надо дать награду, что я собственно и сделал))
Dr. L  [author] 3 Jan @ 8:42am 
спасибо за такой позитивный комментарий :) Хочу тоже пожелать тебе здоровья и удачи.