Справочник Программиста
6.29K subscribers
1.36K photos
387 videos
64 files
1.71K links
По рекламе - @it_start_programmer
Мои курсы - @courses_from_it_start_bot
Сайт - https://it-start.online/
YouTube - https://www.youtube.com/@it_start
Реклама на бирже - https://telega.in/c/programmersGuide_1

Предложить идею: @it_start_suggestion_bot
Download Telegram
#КалькуляторКвадратныхУравнений
Код из видео:

from tkinter import *
from math import sqrt


def solver(a, b, c):
D = b * b - 4 * a * c
if D >= 0:
x1 = (-b + sqrt(D)) / (2 * a)
x2 = (-b - sqrt(D)) / (2 * a)
text = 'D = %s \n x1 = %s \n x2 = %s \n' % (D, x1, x2)
else:
text = 'D = %s \n Это уравнени не имеет корней' % D
return text


def inserter(value):
output.delete('0.0', END)
output.insert('0.0', value)


def handler():
try:
a_val = float(a.get())
b_val = float(b.get())
c_val = float(c.get())
inserter(solver(a_val, b_val, c_val))
except ValueError:
inserter('Убедитесь, что ввели 3 числа')


root = Tk()
root.title('Калькулятор квадратных уравнений')
root.geometry('420x200+300+300')
root.resizable(width=False, height=False)
f_top = Frame(root)
f_bot = Frame(root)
f_top.pack()
f_bot.pack()

a = Entry(f_top, width=5, font='Arial 15')
a.pack(side=LEFT, pady=10, padx=10)

a_lab = Label(f_top, text='x^2 +', font='Arial 15').pack(side=LEFT, pady=10)

b = Entry(f_top, width=5, font='Arial 15')
b.pack(side=LEFT, pady=10)

b_lab = Label(f_top, text='x +', font='Arial 15').pack(side=LEFT, pady=10)

c = Entry(f_top, width=5, font='Arial 15')
c.pack(side=LEFT, pady=10)

c_lab = Label(f_top, text='= 0', font='Arial 15').pack(side=LEFT, pady=10)

btn = Button(f_top, text='Решить', font='Arial 12 bold', command=handler).pack(side=LEFT, pady=10, padx=10)

output = Text(f_bot, bg='black', fg='lime', font='Arial 12')
output.pack(expand=1, fill=BOTH, side=LEFT)

root.mainloop()
#ПоискЭлементаВСписке
Код из видео:

# №1 Используя метод count

colors = ['black', 'yellow', 'grey', 'brown']

if colors.count('yellow'):
print("Элемент найден!")

# №2 С помощью цикла for

for color in colors:
if color == 'yellow':
print('Элемент найден!')

# №3 Используя оператор in

if 'yellow' in colors:
print('Элемент найден!')

# №4 С помощью лямбда функции

filtering = list(filter(lambda x: 'yellow' in x, colors))
print(filtering)

# №5 Используя функцию any
И создаём условие
if any(color in 'yellow' for color in colors):
print('Элемент найден!')
#КонвертацияИзображенияВPDF
Код из видео:

import img2pdf

page_size = [img2pdf.in_to_pt(8.3), img2pdf.in_to_pt(11.7)]
layout = img2pdf.get_layout_fun(page_size)

pdf = img2pdf.convert('путь к изображению', layout_fun=layout)
with open('pdfTest.pdf', 'wb') as f:
f.write(pdf)
👍1
#ГенераторКаптчи
Код из видео:

from captcha.image import ImageCaptcha
from random import choice

a = int(input('Введите количество символов в каптче: '))

alphabet = ['1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g',
'h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w',
'x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z']

pattern = []

for i in range(a):
pattern.append(choice(alphabet))
print(pattern)
image_captcha = ImageCaptcha(width=300, height=200)
image_captcha.write(pattern, 'captcha.png')
#ИзвлечениеБуквИзСтроки
Код из видео:

# 1 способ

str1 = "7953abcd[)12!zfee"
print ("Изначальная строка: ", str1)

char = ""
for i in str1:
if i.isalpha():
char = "".join([char, i])

print ("Буквы: ", str(char))

# 2 способ

import re

str1 = "7953abcd[)12!zfee"
print("Изначальная строка: ", str1)
char = "".join(re.findall("[a-zA-Z]+", str1))
numbers = "".join(re.findall('\d+', str1))
print("Буквы: ", str(char))
print("Цифры: ", numbers)

# 3 способ

import re

str1 = "7953abcd[)12!zfee"
print ("Изначальная строка: ", str1)
char = "".join(re.split("[^a-zA-Z]*", str1))

print ("Буквы: ", str(char))
👍1
#СинтезРечиНаPython
Код из видео:

import pyttsx3

engine = pyttsx3.init()

engine.setProperty('rate', 150)
engine.setProperty('volume', 0.9)

engine.say("I can speak!")
engine.say("Я могу говорить!")


engine.runAndWait()


# Узнаем доступные голоса и их параметры

voices = engine.getProperty('voices')

for voice in voices:
print('------')
print(f'Имя: {voice.name}')
print(f'ID: {voice.id}')
print(f'Язык(и): {voice.languages}')
print(f'Пол: {voice.gender}')
print(f'Возраст: {voice.age}')


# Добавление голосов по id

en_voice_id = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0"
en_voice_id_David = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0"
ru_voice_id = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_RU-RU_IRINA_11.0"

engine.setProperty('voice', en_voice_id)
engine.say('Hello World.')

engine.setProperty('voice', en_voice_id_David)
engine.say('Hello World.')

engine.setProperty('voice', ru_voice_id)
engine.say('Привет, Мир.')

engine.runAndWait()


# Программа, которая озвучивает системное время

from datetime import datetime, date, time
import pyttsx3
import time

ru_voice_id = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_RU-RU_IRINA_11.0"

engine = pyttsx3.init()
engine.setProperty('voice', ru_voice_id)

def say_time(msg):
engine.say(msg)
engine.runAndWait()

time_checker = datetime.now()
say_time(f'Время: {time_checker.hour} часа {time_checker.minute} минуты.')
😍1
#РаботаСzip-архивами
Код из видео:

# Чтение архива

import zipfile

file_zip = zipfile.ZipFile("info.zip", "r")

for file_info in file_zip.infolist():
print(file_info.filename, file_info.date_time, file_info.file_size)
file_zip.close()


# Извлечение файлов из архива

import zipfile

file_zip = zipfile.ZipFile('info1.zip')
file_zip.extractall('./')

file_zip.close()


# Добавление файла в zip-архив

import zipfile

file_zip = zipfile.ZipFile('info.zip', 'w')

file_zip.write('info/inform.txt')
print('Файлы добавлены!')
file_zip.close()


# Добавление большего количества файлов с определённым расширением

import os
import zipfile

file_zip = zipfile.ZipFile('info_one.zip', 'w')

for folder, subfolders, files in os.walk('путь к папке с .txt файлами'):

for file in files:
if file.endswith('.txt'):
file_zip.write(os.path.join(folder, file),
os.path.relpath(os.path.join(folder, file), 'путь к папке с .py файлом'),
compress_type=zipfile.ZIP_DEFLATED)

file_zip.close()


# Проверка, является файл zip-архивом

import zipfile

test_files = ['zip.py', 'newInform.zip']

for file in test_files:
print('ZIP status for {0}: {1}'.format(file, zipfile.is_zipfile(file)))
#КонвертерВалют
Код из видео:

from currency_converter import CurrencyConverter
from tkinter import *


def exchange():
e_usd.delete(0, END)
e_eur.delete(0, END)
e_gbp.delete(0, END)
e_usd.insert(0, '%.2f' % c.convert(e_rub.get(), 'RUB', 'USD'))
e_eur.insert(0, '%.2f' % c.convert(e_rub.get(), 'RUB', 'EUR'))
e_gbp.insert(0, '%.2f' % c.convert(e_rub.get(), 'RUB', 'GBP'))


root = Tk()
root.title('Конвертер валют')
root.geometry('300x250+300+300')
root.resizable(width=False, height=False)
root['bg'] = 'black'
c = CurrencyConverter()

header_frame = Frame(root)
header_frame.pack(fill=X)

header_frame.grid_columnconfigure(0, weight=1)
header_frame.grid_columnconfigure(1, weight=1)
header_frame.grid_columnconfigure(2, weight=1)

h_currency = Label(header_frame, text='Валюта', bg='black', fg='lime', font='Arial 12 bold')
h_currency.grid(row=0, column=0, sticky=EW)
h_course = Label(header_frame, text='Курс', bg='black', fg='lime', font='Arial 12 bold')
h_course.grid(row=0, column=1, columnspan=2, sticky=EW)

# USD курс
usd_currency = Label(header_frame, text='USD', font='Arial 10')
usd_currency.grid(row=1, column=0, sticky=EW)
usd_one = Label(header_frame, text='1', font='Arial 10')
usd_one.grid(row=1, column=1, sticky=EW)
usd_converted = Label(header_frame, text='%.2f' % c.convert(1, 'USD', 'RUB'), font='Arial 10')
usd_converted.grid(row=1, column=2, sticky=EW)

# EUR курс
eur_currency = Label(header_frame, text='EUR', font='Arial 10')
eur_currency.grid(row=2, column=0, sticky=EW)
eur_one = Label(header_frame, text='1', font='Arial 10')
eur_one.grid(row=2, column=1, sticky=EW)
eur_converted = Label(header_frame, text='%.2f' % c.convert(1, 'EUR', 'RUB'), font='Arial 10')
eur_converted.grid(row=2, column=2, sticky=EW)

# GBP курс
gbp_currency = Label(header_frame, text='GPB', font='Arial 10')
gbp_currency.grid(row=3, column=0, sticky=EW)
gbp_one = Label(header_frame, text='1', font='Arial 10')
gbp_one.grid(row=3, column=1, sticky=EW)
gbp_converted = Label(header_frame, text='%.2f' % c.convert(1, 'GBP', 'RUB'), font='Arial 10')
gbp_converted.grid(row=3, column=2, sticky=EW)

calc_frame = Frame(root, bg='black')
calc_frame.pack(expand=1, fill=BOTH)
calc_frame.grid_columnconfigure(1, weight=1)

# RUB
l_rub = Label(calc_frame, text='Рубли: ', bg='black', fg='lime', font='Arial 12 bold')
l_rub.grid(row=0, column=0, padx=10)
e_rub = Entry(calc_frame, justify=CENTER, font='Arial 10')
e_rub.grid(row=0, column=1, columnspan=2, pady=10, padx=10, sticky=EW)

btn_calc = Button(calc_frame, text='Конвертировать', command=exchange)
btn_calc.grid(row=1, column=1, columnspan=2, sticky=EW, padx=10)

res_frame = Frame(root)
res_frame.pack(expand=1, fill=BOTH, pady=5)
res_frame.grid_columnconfigure(1, weight=1)

# USD
l_usd = Label(res_frame, text='USD', font='Arial 10 bold')
l_usd.grid(row=2, column=0)
e_usd = Entry(res_frame, justify=CENTER, font='Arial 10')
e_usd.grid(row=2, column=1, columnspan=2, padx=10, sticky=EW)

# EUR
l_eur = Label(res_frame, text='EUR', font='Arial 10 bold')
l_eur.grid(row=3, column=0)
e_eur = Entry(res_frame, justify=CENTER, font='Arial 10')
e_eur.grid(row=3, column=1, columnspan=2, padx=10, sticky=EW)

# GBP
l_gbp = Label(res_frame, text='GBP', font='Arial 10 bold')
l_gbp.grid(row=4, column=0)
e_gbp = Entry(res_frame, justify=CENTER, font='Arial 10')
e_gbp.grid(row=4, column=1, columnspan=2, padx=10, sticky=EW)

print(c.bounds['USD'])

root.mainloop()
elka.png
247.8 KB
#АнимированнаяОткрытка
Код из видео:

from tkinter import *
from PIL import ImageTk, Image
import random

root = Tk()
root.title('С Новым Годом!')
root.resizable(width=False, height=False)
cWidth = 1280
cHeight = 720
c = Canvas(root, width=cWidth, height=cHeight, bg='#002655')
c.pack()

image = ImageTk.PhotoImage(file='elka.png')
c.create_image(100, 100, image=image, anchor=NW)


def createText():
cText = ('''
Какая сказка за окном!
Кружат снежинки, будто в вальсе,
Весь мир пропитан волшебством,
И воздух переполнен счастьем.

Пусть в этот чудный Новый год
Удача в двери постучится,
И счастье вместе с ней войдет,
И все, что хочешь ты, случится!
''')
c.create_text(cWidth * 2 / 3, cHeight / 2, text=cText, fill='white', font='Times 24 bold')


def createSnow(t, n):
for i in range(500):
x = random.randint(1, cWidth)
y = random.randint(-cHeight * n - 8, cHeight * (1 - n))
w = random.randint(3, 8)
c.create_oval(x, y, x + w, y + w, fill='white', tag=t)


def motion():
👍6🎄1
#УведомленияWindows10
Код из видео:

from win10toast import ToastNotifier

toast = ToastNotifier()

# Добавление уведомления
toast.show_toast('Заголовок', 'Уведомление!', duration=10, icon_path='notepad.ico')

# Можно также сделать так, чтобы уведомления появлялись спустя определённое кол-во времени:
while True:
toast = ToastNotifier()
toast.show_toast('Заголовок', 'Уведомление!', duration=10)
time.sleep(5)

# Функция для создания уведомлений
def windows_popup(title, content, duration=10):
toast = ToastNotifier()
toast.show_toast(title, content, duration=duration, icon_path='notepad.ico')

windows_popup('Заголовок', 'Пора снимать видео!')
windows_popup('Заголовок2', 'Пора снимать второе видео!')