What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Изучаем python + объяснение кода

network work

Light Weight
Депозит
$0
В этой статье мы разберем простые скрипты написанные на python .
P.s Скрипты не будут по типу калькулятора и т.п , все скрипты могут быть полезными в определённой сфере , и так начнем

Статья состоит из 3х этапов
1- Теория (для чего предназначен python и стоит ли его изучать ?)
2 - Подготовка рабочего места (правильная установка python + установка библиотек и т.п)
3 - Практика (Мы разберем пару скриптов которые помогут в дальнейшем изучении)


1.1 Теория

Python был создан известным прогером Гвидо ван Россум из Нидерландов , если кратко то сам ЯП был создан для легко написание и чтения программ

Плюсы python , 1 простота кода и легкая читабельность , 2 большой выбор библиотек на разные тематики , 3 На этом ЯП можно написать буквально все начиная от бота заканчивая вэб приложением . На самом деле питон полезный ЯП , более подробно о плюсах вам расскажет дядя гугл .

Минусы python ,1 потребляет много памяти по сравнению с некоторыми ЯП , 2 Python является интерпретируемым языком что снижает скорость выполнения задачи ,3 Не совсем подходит для каких то глобальных программ .

И так вопрос ,стоит ли изучать python ? Если вы хотите начинать изучение программирование с 0 то этот язык вполне подходит как первый , он славиться своей простотой и не только .Но если вы уже имейте знания других ЯП то думаю ответ будет однозначно нет. Все зависит от ваших планов , как говориться "на вкус и цвет любителей нет "

1.2 Подготовка рабочего места
Переходим по ссылке https://www.python.org/ , жмем кнопочку скачать , выбираем версию и ставим на загрузку .Во время установки нам обязательно надо поставить галочку возле add path
1721826714404.png



Поздравляю , вы установили python . Переходим к более интересному , к Практике

1.3 Практика

3.1 Первый скрипт будет конвектор USD в EUR

Мы напишем скрипт который будет работать по апи , а так же разберем каждую строчку .Я добавлю в код комментарии которые будут указывать и подсказывать для чего нужна строка , а более подробно разберем тут .

Python: Скопировать в буфер обмена
Code:
import requests

def convert_currency(summaconvert, kodvalyti, kodvaliyti2):
    url = f'https://api.exchangerate-api.com/v4/latest/{kodvalyti}'
   
    try:
        response = requests.get(url)
        response.raise_for_status()
    except requests.RequestException as e:
        print(f"Ошибка при запросе к API: {e}")
        return None

    data = response.json()

    if kodvaliyti2 not in data['rates']:
        print(f"Ошибка: Валюта {kodvaliyti2} не найдена.")
        return None

    exchange_rate = data['rates'][kodvaliyti2]
    converted_summaconvert = summaconvert * exchange_rate
    return converted_summaconvert

try:
    summaconvert = float(input("Введите сумму для конвертации "))
    kodvalyti = input("Введите код исходной валюты (например, USD) ").upper()
    kodvaliyti2 = input("Введите код целевой валюты (например, EUR) ").upper()

    converted_summaconvert = convert_currency(summaconvert, kodvalyti, kodvaliyti2)

    if converted_summaconvert is not None:
        print(f"{summaconvert} {kodvalyti} = {converted_summaconvert:.2f} {kodvaliyti2}")
except ValueError:
    print("Ошибка, попробуйте еще раз")

И так начнем
import requests - это строчка импортирует библиотеку requests . Это библиотека создана для работы с http запросами , это облегчает нашу задачу и помогает быстро и коректно взаимодействовать с серверами

def itog(summaconvert, kodvalyti, kodvaliyti2): - это строчка отвечает за конвертацию самой валюты по актуальному курсу полученной по API указанного сайта

url = "" , тут мы должны указать путь к апиключи если это можно так назвать , пример url = f'https://api.exchangerate-api.com/v4/latest/{kodvalyti}' .Все запросы касательно актуального курса в этом скрипте идут туда

try: - эта строчка отвечает и дает возможность выполнить определённую часть кода а если что то пошло не так и появилась ошибка перейти на другую часть кода , если кратко то это строчка создана для обрабатывания исключений

response = requests.get(url)- это строка отвечает за выполнения GET-запроса к нужному url

response.raise_for_status()
except requests.RequestException as e: - это строка отвечает за корректную работу http-запроса

data = response.json() - запрашивает данные в формате json (JavaScript Object Notation) , так же этот формат часто используется для передачи данных между клиентом или серверами .

if kodvaliyti2 not in data['rates']: - это строчка отвечает за проверку целевой валюты ( в нашем случаи USD или EUR)

exchange_rate = data['rates'][kodvaliyti2]- через эту строчку мы получаем актуальный курс целевой валюты

onverted_summaconvert = summaconvert * exchange_rate- в этой строке мы рассчитываем конвертированную сумму

return converted_summaconvert - возвращаем конвертированную сумму для дальнейшей работы

try: - можете почитать выше для чего предназначена это строка

summaconvert = float(input("Введите сумму для конвертации ")) - запрашиваем нужную сумму для конвертации

kodvalyti = input("Введите код исходной валюты (например, USD) ").upper() - строчка Запрашивает код исходной валюты и переводит его в верхний регистр для корректной работы

kodvaliyti2 = input("Введите код целевой валюты (например, EUR) ").upper() - Запрашивает код исходной валюты и переводит его в верхний регистр для нормальной работы

converted_summaconvert = itog(summaconvert, kodvalyti, kodvaliyti2) - выполняет саму конвертацию валют

if converted_summaconvert is not None:
print(f"{summaconvert} {kodvalyti} = {converted_summaconvert:.2f} {kodvaliyti2}")
except ValueError:
print("Ошибка, попробуйте еще раз") - Если скрипт работает корректно то выводит результат если возникли какие то ошибки сообщает юзеру

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

3.2 Я решил что для начало стоит изучить простого бота который будет работать по апи и публиковать самые свежие новости в телеграмм канал указанный вами . Давайте разберем и напишем собственно код .

Для начало нам надо установить библиотеку telebot , открываем cmd прописываем pip install telebot

Создаем файл для редактирования (main.py ) и вставляем собственно код снизу

Python: Скопировать в буфер обмена
Code:
import requests
import telebot
import time

api_bot = '6672409243:AAHfoFHqaFGpOpkbjHAgGRPALz_ZqxTZmng'
link_kanal = '@ggdgfkdfk'
api_key = '1ddfaaf6f6b24e4a8b8c47833edb8501'
api_url = 'https://newsapi.org/v2/top-headlines'
PARAMS = {
    'apiKey': api_key,
    'country': 'us',
    'pageSize': 50
}

bot = telebot.TeleBot(api_bot)

def fetch_news():
    response = requests.get(api_url, params=PARAMS)
    if response.status_code == 200:
        return response.json()
    else:
        print(f"Ошибка при получении информации: {response.status_code}")
        return None

def post_news():
    news_data = fetch_news()
    if news_data and 'articles' in news_data:
        for article in news_data['articles']:
            title = article.get('title')
            description = article.get('description')
            url = article.get('url')
            if title:
                message = f"{title}\n{description}\n{url}"
                bot.send_message(link_kanal, message)
               
                time.sleep(1)
    else:
        bot.send_message(link_kanal, "Не удалось получить информацию , возникла ошибка.")

if __name__ == '__main__':
    post_news()

Данный скрипт работает по апи сайта newsapi (не реклама ) данный сайт собирает множество новых новостей , изучить можете его более подробно в интернете . И так начнем разбор кода

import requests - Это библиотека создана для работы с http запросами , это облегчает нашу задачу и помогает быстро и коректно взаимодействовать с серверами

import telebot - данная библиотека используется для создание каких то скриптов или ботов телеграмм , библиотека легкая и многофункциональная

import time - в нашем скрипте это бибилотека отвечает за паузу между отправками сообщений

Скрипт работает по такому принципу , за получение информации через апи отвечает библиотека requests затем все публикуется в телеграмм канал при помощи библиотеки telebot , а time отвечает за паузу между постами

api_bot = '' - сюда надо вести апи хэш бота в телеграмм , для его создания перейдите в бота https://t.me/BotFather ( не реклама ) и создайте тг бота
link_kanal = '' - надо создать сам телеграмм канал и указать ссылку на него (пример : @tgnews24) , после этого обязательно добавьте и назначьте созданного бота администратором
api_key = '1ddfaaf6f6b24e4a8b8c47833edb8501' - сюда надо ввести апи сайта ( его можно получить тут https://newsapi.org/ ( не реклама ))
api_url = 'https://newsapi.org/v2/top-headlines' - тут ничего не трогаем

PARAMS = {
'apiKey': api_key,
'country': 'us',
'pageSize': 50
} - эти строчки создают словарь который будет передаваться по API на сайт

bot = telebot.TeleBot(api_bot) - строчка отвечает за создание обьекта бота с использование API ключа


def fetch_news():
response = requests.get(api_url, params=PARAMS)
if response.status_code == 200:
return response.json()
else:
print(f"Ошибка при получении информации: {response.status_code}")
return None - этот кусок кода отвечает за отправление get запроса к указанному нами api и возвращает json ответ , если все прошло хорошо .Если что то пошло не так то скрипт оповещает вас об этом и возвращается в изначальное положения

def post_news()
news_data = fetch_news(): - включает в работу функцию fetch_news() для получение данных о новых новостях через API

if news_data and 'articles' in news_data: - проверяет успешность получение данных а так же отвечает за проверку 'articles'
for article in news_data['articles']: - строчка отвечает за перебор всех новостей полученные через API

title = article.get('title')- отвечает за получения заголовка статьи

description = article.get('description') - отвечает за краткое описание статьи

url = article.get('url') - после краткой информации это строчка должна выдать ссылку на основной материал

if title: - проверка заголовка статьи

message = f"{title}\n{description}\n{url}" - создает конечный текст который получит юзер , собирают всю инфу которую упомянул выше ( заголовок , основная мысль , ссылка на саму новость )

bot.send_message(link_kanal, message) - показывает конечный результат юзеру

time.sleep(1) - время после которого публикуется новая новость , это время можно изменить под себя ( время в секундах )

else:
bot.send_message(link_kanal, "Не удалось получить информацию , возникла ошибка.") - если данные не были получены по какой-то причины и т.п то скрипт выдает такую ошибку

Данный скрипт был создан как скелет для ваших идей , его можно легко отредактировать и настроить под себя . Думаю кому-то пригодиться 100 %

1721912096808.png





3.3 Давайте создадим скрипт который будет менять формат прокси на нужным для вас

Я много где замечал что к примеру в тот же скрипт нужен определённый формат прокси , давай разберем скрипт который конвертирует с одного формата в нужный формат прокси
созд
Python: Скопировать в буфер обмена
Code:
def convert_proxy_format(proxy_str, input_format, output_format):
    try:
        components = proxy_str.split(':')
        if len(components) != len(input_format.split(':')):
            raise ValueError("Формат строки не соответствует ожидаемому")
        proxy_dict = {
            'ip': components[0],
            'port': components[1],
            'user': components[2],
            'pass': components[3]
        }
        output_str = output_format
        for key, value in proxy_dict.items():
            output_str = output_str.replace(key, value)
       
        return output_str
    except Exception as e:
        print(f"Ошибка: {e}")
        return None

def main():
    input_file = 'input.txt'
    output_file = 'output.txt'
   
    # Задаем форматы
    input_format = 'ip:port:user:pass'
    output_format = 'user:pass@ip:port'
   
    with open(input_file, 'r') as infile, open(output_file, 'w') as outfile:
        for line in infile:
            line = line.strip()
            converted_proxy = convert_proxy_format(line, input_format, output_format)
            if converted_proxy:
                outfile.write(converted_proxy + '\n')

if __name__ == '__main__':
    main()


Давайте разберем код

def convert_proxy_format(proxy_str, input_format, output_format): -это строчка принимает строку прокси можно сказать и формат входящих и исходящих данных

try: - дает возможность при какой либо ошибке обработать ее буквально

components = proxy_str.split(':') - данная строка разделяет строку на ":" + сохраняет все в список components

if len(components) != len(input_format.split(':')):
raise ValueError("Формат строки не соответствует ожидаемому") - это часть кода проверяет соответствует ли входящие данные, если возникла какая-то ошибка сообщает о ней

proxy_dict = {
'ip': components[0],
'port': components[1],
'user': components[2],
'pass': components[3]
} - это часть кода создает словарь под названием proxy_dict для дальнейшей работы

output_str = output_format - это строка создает новую переменную output_str , почему же мы так сделали ? Ответ прост , облегчает написание кода .

for key, value in proxy_dict.items():
output_str = output_str.replace(key, value) - этот кусок кода отвечает за замену ключевых слов , например если output содержит pass , login а proxy_dict имеет pass : 1234 , login qwerty то в итоге мы получим 1234:qwerty . Надеюсь суть поняли

return output_str - Возвращает преобразованную строку

except Exception as e:
print(f"Ошибка: {e}")
return None - если появляется какая-то ошибка то скрипт предупреждает пользователя и завершает работу скрипта

def main():
input_file = 'input.txt'
output_file = 'output.txt' - этот кусок кода предназначен для входа и выхода кода . То есть тут можно указать откуда скрипт будет черпать те же прокси и куда будет их сохранять


input_format = 'ip:port:user:pass'
output_format = 'user:pass@ip:port' - а этот кусок предназначен для самого конвектирования скрипта , то есть вводим такое ip:port:user:pass получаем такое user:pass@ip:port .Это все можете настраивать под себя

with open(input_file, 'r') as infile, open(output_file, 'w') as outfile: - открывает файл для чтение а так же используется команда with которая автоматически все закроет после успешной работы

for line in infile: - читает все строчки из файла infile

line = line.strip() - удаляет все лишнее в начале и в конце строки

converted_proxy = convert_proxy_format(line, input_format, output_format) - строчка предназначена для преобразовании строки с прокси в нужный формат с помощью команды convert_proxy_format

if converted_proxy: - проверяет что все прошло успешно

outfile.write(converted_proxy + '\n') - записывает итоговый результат в указанный файл , в нашем случаи в output

Спасибо за внимания !!!

На этой ноте я думаю стоит закончить статью , у меня в разработке очень много проектов . Поддержите автора своим лайком и я буду выпускать уже серьезные скрипты и не только на python , А так же занимаюсь написанием проектов .Статья как по мне получилось интересной хоть и долгой , если увижу актив то обещаю выпустить скрипт для мониторинга той же крипты и т.п .Жду ваши идеи в лс , чем ярче идея тем быстрее я ее реализую . Надеюсь хоть чуть чуть помог в развитии в сторону python .Удачного дня , забыл сказать все скрипты это можно сказать скелет для ваших проектов . Пользуйтесь умом и все у вас получиться !!!
 
Неплохо, но:
1) очень резкий переход от истории создания языка и его установки к написаню кода.
2) грамматика. Я никогда не цепляюсь к грамматическим ошибкам в тексте, но "Конвектор валют" - это что-то новенькое.
3) если у меня нет знаний языка, то я ничего не пойму. Если статья для самых маленьких, то это точно не сюда. Если для чуть более опытных, то это ничего нового им не даст.
4) если мы делаем разбор кода, то неплохо бы оборачивать его соответствующим тегом, ибо нечитабельно.
для первого раза неплохо, но надо уделить чуть больше внимания форматированию и структурированию статьи.
 
Top