Справочник Программиста
6.29K subscribers
1.35K photos
387 videos
64 files
1.7K 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
Рано или поздно я наконец начну придерживаться графика, как и раньше. По крайней мере я на это надеюсь))
6👍3🔥1
GUI Переводчик на Python tkinter v2
Код из видео:

from tkinter import *
from tkinter import ttk
from googletrans import Translator


def translate():
for language, suffix in languages.items():
if comboTwo.get() == language:
text = t_input.get('1.0', END)
translation = translator.translate(text, dest=suffix)
t_output.delete('1.0', END)
t_output.insert('1.0', translation.text)


root = Tk()
root.geometry('500x350')
root.title('Переводчик')
root.resizable(width=False, height=False)
root['bg'] = 'black'
translator = Translator()

languages = {'Русский': 'ru', 'Английский': 'en', 'Французский': 'fr'}

header_frame = Frame(root, bg='black')
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)

comboOne = ttk.Combobox(header_frame,
values=[lang for lang in languages], state='readonly')
comboOne.current(0)
comboOne.grid(row=0, column=0)

label = Label(header_frame, fg='white', bg='black', font='Arial 17 bold', text='->')
label.grid(row=0, column=1)

comboTwo = ttk.Combobox(header_frame,
values=[lang for lang in languages], state='readonly')
comboTwo.current(1)
comboTwo.grid(row=0, column=2)

t_input = Text(root, width=35, height=5, font='Arial 12 bold')
t_input.pack(pady=20)

btn = Button(root, width=45, text='Перевести', command=translate)
btn.pack()

t_output = Text(root, width=35, height=5, font='Arial 12 bold')
t_output.pack(pady=20)

root.mainloop()
👍253🔥1
ой, спасибо всем за 7к))
21👍1🔥1
готовлю видос, как раз уже месяц прошёл))
19👍6🏆2🔥1
Ну всё, завтра ожидайте видос в 16:30 по МСК!
Надеюсь следующий выйдет точно не через месяц))
👍7🎉6🔥3
всё время проскакивают мысли как было классно, когда снимал их каждый день. Я бы и сейчас с радостью этим занимался, да времени не хватает :(
короче, чтоб канал не простаивал без дела, я решил попробовать его хоть как-то вести)
Буду выкладывать статьи почаще, а может ещё что-нибудь, пока не знаю))
С видосами сложнее, надо попытаться выйти хотя бы на 1 видео в неделю
👍81🔥1
Решил ввести что-то типа новой рубрики на канале, где буду выкладывать полезные лайфхаки/приёмы.

Подсчёт всех повторяющихся элементов списка с помощью встроенного модуля Python:

from collections import Counter

test_list = [1, 5, 4, 1, 2, 8, 5, 2, 11, 3, 6, 1, 11, 15, 5]
counting = Counter(test_list)
print(counting)

# Вывод: Counter({1: 3, 5: 3, 2: 2, 11: 2, 4: 1, 8: 1, 3: 1, 6: 1, 15: 1})
👍131🔥1
Справочник Программиста
https://www.youtube.com/watch?v=u6uAouBcHqs
Код из видео:

from PIL import Image
import glob

types = ("*.png", "*.jpg")
files_grabbed = []

for files in types:
files_grabbed.extend(glob.glob(files))

print(f'Найдено файлов: {len(files_grabbed)}')

for i in files_grabbed:
img = Image.open(i)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(f'output/{i}')
👍83❤‍🔥2🐳1
В модуле difflib есть метод get_close_matches, который поможет найти наиболее подходящие совпадения к введённой строке.

Первый аргумент этого метода задаёт искомую строку, второй аргумент задаёт список, в котором выполняется поиск, в третьем, и не обязательном аргументе n можно задать максимальное число возвращаемых совпадений. Ещё этот метод поддерживает необязательный именованный аргумент cutoff (по умолчанию он установлен в значение 0.6), который позволяет задавать пороговое значение для оценки совпадений.

Пример кода:

import difflib

print(difflib.get_close_matches('python', ['pyhton', 'apple', 'path', 'sea', 'pear'], n=2))

# Вывод ['pyhton', 'path']
👍51🏆1
Получение уникальных элементов из списка методом set()

С помощью метода set() преобразуем список в множество, получим уникальные значения, и сделаем из множества список.

Пример:

from random import randint

numbers = [randint(1, 5) for i in range(1, 15)]
print(f'Начальный список: {numbers}')

unique_numbers = list(set(numbers))
print(f'Список уникальных значений: {unique_numbers}')

# Вывод:
# Начальный список: [3, 2, 1, 3, 3, 3, 2, 2, 3, 1, 1, 2, 5, 5]
# Список уникальных значений: [1, 2, 3, 5]
4👍2🏆1🤨1
Справочник Программиста
https://www.youtube.com/watch?v=nIBDaDUvLjo
Код из видео:

import time
from tkinter import *
import pygame


def stop():
btn_start.pack()
btn_stop.pack_forget()
pygame.mixer.music.pause()


def sound():
btn_start.pack_forget()
btn_stop.pack()
pygame.mixer.music.play()


def start():
duration = int(seconds.get())
while duration:
m, s = divmod(int(duration), 60)
min_sec_format = '{:02d}:{:02d}'.format(m, s)
count_digit['text'] = min_sec_format
count_digit.update()
time.sleep(1)
duration -= 1
sound()


file = '1.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)

root = Tk()
root.title('Таймер')
root.geometry('150x150')
root.resizable(0, 0)

count_digit = Label(root, text='0', font='Arial 15 bold')
count_digit.pack()

seconds = Entry(root, font='Arial 15 bold', width=7)
seconds.pack(pady=10)

btn_start = Button(root, text='Старт', font='Arial 15 bold', command=start)
btn_start.pack()

btn_stop = Button(root, text='Выключить', font='Arial 15 bold', command=stop)

root.mainloop()
👍74🏆2