5 простых программ на Python

Статьи

Введение

В данной статье мы напишем 5 простых и полезных программ на языке программирования Python.

Получение прогноза погоды на Python

Для получения погоды мы будем использовать API OpenWeatherMap, который предоставляет разнообразные данные о погоде по всему миру.

Установка библиотеки requests

Перед написанием кода необходимо установить библиотеку requests, для этого можно перейти в терминал/командную строку, прописать pip install requests и нажать Enter.

Получение ключа API

Для использования OpenWeatherMap API необходим персональный ключ, который можно получить, зарегистрировавшись на их сайте. Данный ключ используется для аутентификации в запросах.

Написание кода

Импорт библиотеки requests

Первым делом импортируем ранее установленную библиотеку requests:

import requests
Пишем функцию для получения погоды

Создадим функцию, которую назовём get_weather(), в которой будет присутствовать один параметр, а именно:

  • city — название города, в котором необходимо узнать погоду

Также укажем, что функция ничего не возвращает.

import requests


def get_weather(city: str) -> None:

Внутри функции первым делом укажем ключ API, ссылку на API и словарь, в котором будет храниться название города, единица измерения, язык и API:

import requests


def get_weather(city: str) -> None:
    api_key = '79d1ca96933b0328e1c7e3e7a26cb347'
    base_url = 'https://api.openweathermap.org/data/2.5/weather'
    params = {
        'q': city,
        'units': 'metric',
        'lang': 'ru',
        'appid': api_key
    }

Далее будет идти конструкция try … except. В try будет выполняться GET-запрос с указанными параметрами и получение результата. После этого из json-ответа будут получены необходимые данные, сохранены в соответствующие переменные и выведены:

import requests


def get_weather(city: str) -> None:
    api_key = '79d1ca96933b0328e1c7e3e7a26cb347'
    base_url = 'https://api.openweathermap.org/data/2.5/weather'
    params = {
        'q': city,
        'units': 'metric',
        'lang': 'ru',
        'appid': api_key
    }

    try:
        response = requests.get(base_url, params=params)
        response.raise_for_status()
        weather_data = response.json()

        temperature = weather_data['main']['temp']
        temperature_feels = weather_data['main']['feels_like']
        wind_speed = weather_data['wind']['speed']
        cloud_cover = weather_data['weather'][0]['description']
        humidity = weather_data['main']['humidity']

        print(f'Температура воздуха: {temperature}°C')
        print(f'Ощущается как: {temperature_feels}°C')
        print(f'Ветер: {wind_speed} м/с')
        print(f'Облачность: {cloud_cover}')
        print(f'Влажность: {humidity}%')

В except будут обрабатываться ошибки:

import requests


def get_weather(city: str) -> None:
    api_key = '79d1ca96933b0328e1c7e3e7a26cb347'
    base_url = 'https://api.openweathermap.org/data/2.5/weather'
    params = {
        'q': city,
        'units': 'metric',
        'lang': 'ru',
        'appid': api_key
    }

    try:
        response = requests.get(base_url, params=params)
        response.raise_for_status()
        weather_data = response.json()

        temperature = weather_data['main']['temp']
        temperature_feels = weather_data['main']['feels_like']
        wind_speed = weather_data['wind']['speed']
        cloud_cover = weather_data['weather'][0]['description']
        humidity = weather_data['main']['humidity']

        print(f'Температура воздуха: {temperature}°C')
        print(f'Ощущается как: {temperature_feels}°C')
        print(f'Ветер: {wind_speed} м/с')
        print(f'Облачность: {cloud_cover}')
        print(f'Влажность: {humidity}%')

    except requests.RequestException as e:
        print(f'Ошибка при запросе погоды: {e}')
    except KeyError:
        print(f'Не удалось определить город: {city}')
Вызов функции

Можем вызвать функцию и проверить как она работает:

import requests


def get_weather(city: str) -> None:
    api_key = '79d1ca96933b0328e1c7e3e7a26cb347'
    base_url = 'https://api.openweathermap.org/data/2.5/weather'
    params = {
        'q': city,
        'units': 'metric',
        'lang': 'ru',
        'appid': api_key
    }

    try:
        response = requests.get(base_url, params=params)
        response.raise_for_status()
        weather_data = response.json()

        temperature = weather_data['main']['temp']
        temperature_feels = weather_data['main']['feels_like']
        wind_speed = weather_data['wind']['speed']
        cloud_cover = weather_data['weather'][0]['description']
        humidity = weather_data['main']['humidity']

        print(f'Температура воздуха: {temperature}°C')
        print(f'Ощущается как: {temperature_feels}°C')
        print(f'Ветер: {wind_speed} м/с')
        print(f'Облачность: {cloud_cover}')
        print(f'Влажность: {humidity}%')

    except requests.RequestException as e:
        print(f'Ошибка при запросе погоды: {e}')
    except KeyError:
        print(f'Не удалось определить город: {city}')


if __name__ == "__main__":
    city = input('Введите город, в котором хотите узнать погоду: ')
    get_weather(city)
Проверка работы кода

Генерация qr-кода на Python

Установка и импорт библиотеки qrcode

Перед написанием кода необходимо установить библиотеку qrcode, для этого можно перейти в терминал/командную строку, прописать pip install qrcode и нажать Enter. После инсталляции мы её импортируем:

import qrcode

Пишем функцию для генерации qr-кода

Создадим функцию, которую назовём generate_qr_code(), в которой будет присутствовать два параметра, а именно:

  • data — текст/URL для создания qr-кода
  • filename — название итогового файла qr-кода
import qrcode


def generate_qr_code(data, filename):

Внутри функции сначала создадим объект QRCode с определенными параметрами:

  • version: Версия QR-кода (от 1 до 40, где 1 — самая маленькая, 40 — самая большая).
  • error_correction: Уровень коррекции ошибок (ERROR_CORRECTOR_L — низкий уровень коррекции).
  • box_size: Размер каждой ячейки QR-кода в пикселях.
  • border: Количество ячеек вокруг QR-кода.
import qrcode


def generate_qr_code(data, filename):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )

Далее при помощи метода add_data() добавляем данные в QR-код и сгенерируем его:

import qrcode


def generate_qr_code(data, filename):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )
    qr.add_data(data)
    qr.make(fit=True)

Создадим qr-код в виде изображения при помощи метода make_image() и сохраним его:

import qrcode


def generate_qr_code(data, filename):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )
    qr.add_data(data)
    qr.make(fit=True)

    img = qr.make_image(fill_color="black", back_color="white")
    img.save(filename)

Вызов функции

Осталось вызвать нашу функцию с передачей в неё необходимых данных:

import qrcode


def generate_qr_code(data, filename):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )
    qr.add_data(data)
    qr.make(fit=True)

    img = qr.make_image(fill_color="black", back_color="white")
    img.save(filename)


if __name__ == "__main__":
    data = input("Введите текст или URL для создания QR-кода: ")
    filename = input("Введите имя файла для сохранения QR-кода (с расширением .png): ")

    generate_qr_code(data, filename)
    print(f"QR-код успешно сохранен в файле {filename}")

Определение координат местоположения по адресу

Установка и импорт библиотеки geopy

Перед написанием кода необходимо установить библиотеку geopy, для этого можно перейти в терминал/командную строку, прописать pip install geopy и нажать Enter. После инсталляции импортируем из неё класс Nominatim:

from geopy.geocoders import Nominatim

Пишем функцию для определения координат по заданному адресу

Создадим функцию, которую назовём get_coordinates(), в которой будет присутствовать один параметр, а именно:

  • address — адрес, координаты которого необходимо определить
from geopy.geocoders import Nominatim


def get_coordinates(address):

Внутри функции создадим объект класса Nominatim с указанием user_agent и вызовем метод geocode() для поиска координат по адресу, который хранится в переменно address:

from geopy.geocoders import Nominatim


def get_coordinates(address):
    geolocator = Nominatim(user_agent="geoapiExercises")
    location = geolocator.geocode(address)

Далее будет идти условие, что если location не равен None (т.е. адрес был найден), извлекаем широту (latitude) и долготу (longitude) из объекта location и выводим их:

from geopy.geocoders import Nominatim


def get_coordinates(address):
    geolocator = Nominatim(user_agent="geoapiExercises")
    location = geolocator.geocode(address)

    if location:
        latitude = location.latitude
        longitude = location.longitude
        print(f"Координаты местоположения '{address}':")
        print(f"Широта: {latitude}\nДолгота: {longitude}")
    else:
        print(f"Не удалось найти координаты для адреса '{address}'")

Вызов функции

Осталось вызвать нашу функцию с передачей в неё необходимых данных:

from geopy.geocoders import Nominatim


def get_coordinates(address):
    geolocator = Nominatim(user_agent="geoapiExercises")
    location = geolocator.geocode(address)

    if location:
        latitude = location.latitude
        longitude = location.longitude
        print(f"Координаты местоположения '{address}':")
        print(f"Широта: {latitude}\nДолгота: {longitude}")
    else:
        print(f"Не удалось найти координаты для адреса '{address}'")


if __name__ == "__main__":
    address = input("Введите адрес для определения координат: ")
    get_coordinates(address)

Удаление фона на изображении

Установка и импорт библиотек rembg и Pillow

Перед написанием кода необходимо установить библиотеки rembg и Pillow. Для этого можно перейти в терминал/командную строку, прописать pip install rembg Pillow и нажать Enter. После инсталляции из rembg импортируем функцию remove, а из Pillow — класс Image:

from rembg import remove
from PIL import Image

Написание кода

Сохраним путь до исходного изображения и путь до итогового изображения в соответствующие переменные:

from rembg import remove
from PIL import Image

input_path = 'image.jpg'
output_path = 'image_output.png'

Далее откроем исходное изображение и удалим фон при помощи функции remove:

from rembg import remove
from PIL import Image

input_path = 'image.jpg'
output_path = 'image_output.png'

open_image = Image.open(input_path)
output = remove(open_image)

Сохраним итоговый результат:

from rembg import remove
from PIL import Image

input_path = 'image.jpg'
output_path = 'image_output.png'

open_image = Image.open(input_path)
output = remove(open_image)

output.save(output_path)

Пример работы кода

Исходное изображение:

Итоговое изображение:

Создание скриншота

Установка и импорт библиотеки Pillow

Перед написанием кода необходимо установить библиотеку Pillow. Для этого можно перейти в терминал/командную строку, прописать pip install Pillow и нажать Enter. После инсталляции импортируем из неё модуль ImageGrab:

from PIL import ImageGrab

Написание кода

На самом деле код довольно прост и для создания скриншота нам нужно обратиться к функции grab из модуля ImageGrab:

from PIL import ImageGrab

screenshot = ImageGrab.grab()

Далее сохраним скриншот при помощи метода save():

from PIL import ImageGrab

screenshot = ImageGrab.grab()
screenshot.save("screenshot.png")

Заключение

В ходе статьи мы с Вами рассмотрели целых 5 простых программ Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Admin
Admin
IT Start