22 полезных примера кода на Python
Python — один из самых популярных языков программирования, чрезвычайно полезный и в решении повседневных задач. В этой статье я вкратце расскажу о 22 полезных примерах кода, позволяющих воспользоваться мощью Python.
Некоторые из примеров вы могли уже видеть ранее, а другие будут новыми и интересными для вас. Все эти примеры легко запоминаются.
1. Получаем гласные
Этот пример возвращает в строке найденные гласные «a e i o u» . Это может оказаться полезным при поиске или обнаружении гласных.
def get_vowels(String): return [each for each in String if each in "aeiou"] get_vowels("animal") # [a, i, a] get_vowels("sky") # [] get_vowels("football") # [o, o, a]
2. Первая буква в верхнем регистре
Этот пример используется для превращения каждой первой буквы символов строки в прописную букву. Он работает со строкой из одного или нескольких символов и будет полезен при анализе текста или записи данных в файл и т.п.
def capitalize(String): return String.title() capitalize("shop") # [Shop] capitalize("python programming") # [Python Programming] capitalize("how are you!") # [How Are You!]
3. Печать строки N раз
Этот пример может печатать любую строку n раз без использования циклов Python.
n=5 string="Hello World " print(string * n) #Hello World Hello World Hello World Hello World Hello World
4. Объединяем два словаря
Этот пример выполняет слияние двух словарей в один.
def merge(dic1,dic2): dic3=dic1.copy() dic3.update(dic2) return dic3 dic1= dic2= merge(dic1,dic2) #
5. Вычисляем время выполнения
Этот пример полезен, когда вам нужно знать, сколько времени требуется для выполнения программы или функции.
import time start_time= time.time() def fun(): a=2 b=3 c=a+b end_time= time.time() fun() timetaken = end_time - start_time print("Your program takes: ", timetaken) # 0.0345
6. Обмен значений между переменными
Это быстрый способ обменять местами две переменные без использования третьей.
a=3 b=4 a, b = b, a print(a, b) # a= 4, b =3
7. Проверка дубликатов
Это самый быстрый способ проверки наличия повторяющихся значений в списке.
def check_duplicate(lst): return len(lst) != len(set(lst)) check_duplicate([1,2,3,4,5,4,6]) # True check_duplicate([1,2,3]) # False check_duplicate([1,2,3,4,9]) # False
8. Фильтрация значений False
Этот пример используется для устранения всех ложных значений из списка, например false, 0, None, » » .
def Filtering(lst): return list(filter(None,lst)) lst=[None,1,3,0,"",5,7] Filtering(lst) #[1, 3, 5, 7]
9. Размер в байтах
Этот пример возвращает длину строки в байтах, что удобно, когда вам нужно знать размер строковой переменной.
def ByteSize(string): return len(string.encode("utf8")) ByteSize("Python") #6 ByteSize("Data") #4
10. Занятая память
Пример позволяет получить объём памяти, используемой любой переменной в Python.
import sys var1="Python" var2=100 var3=True print(sys.getsizeof(var1)) #55 print(sys.getsizeof(var2)) #28 print(sys.getsizeof(var3)) #28
11. Анаграммы
Этот код полезен для проверки того, является ли строка анаграммой. Анаграмма — это слово, полученное перестановкой букв другого слова.
from collections import Counter def anagrams(str1, str2): return Counter(str1) == Counter(str2) anagrams("abc1", "1bac") # True
12. Сортировка списка
Этот пример сортирует список. Сортировка — это часто используемая задача, которую можно реализовать множеством строк кода с циклом, но можно ускорить свою работу при помощи встроенного метода сортировки.
my_list = ["leaf", "cherry", "fish"] my_list1 = ["D","C","B","A"] my_list2 = [1,2,3,4,5] my_list.sort() # ['cherry', 'fish', 'leaf'] my_list1.sort() # ['A', 'B', 'C', 'D'] print(sorted(my_list2, reverse=True)) # [5, 4, 3, 2, 1]
13. Сортировка словаря
orders = < 'pizza': 200, 'burger': 56, 'pepsi': 25, 'Coffee': 14 >sorted_dic= sorted(orders.items(), key=lambda x: x[1]) print(sorted_dic) # [('Coffee', 14), ('pepsi', 25), ('burger', 56), ('pizza', 200)]
14. Получение последнего элемента списка
my_list = ["Python", "JavaScript", "C++", "Java", "C#", "Dart"] #method 1 print(my_list[-1]) # Dart #method 2 print(my_list.pop()) # Dart
15. Преобразование разделённого запятыми списка в строку
Этот код преобразует разделённый запятыми список в единую строку. Его удобно использовать, когда нужно объединить весь список со строкой.
my_list1=["Python","JavaScript","C++"] my_list2=["Java", "Flutter", "Swift"] #example 1 "My favourite Programming Languages are" , ", ".join(my_list1)) # My favourite Programming Languages are Python, JavaScript, C++ print(", ".join(my_list2)) # Java, Flutter, Swift
16. Проверка палиндромов
Этот пример показывает, как быстро проверить наличие палиндромов.
def palindrome(data): return data == data[::-1] palindrome("level") #True palindrome("madaa") #False
17. Перемешивание списка
from random import shuffle my_list1=[1,2,3,4,5,6] my_list2=["A","B","C","D"] shuffle(my_list1) # [4, 6, 1, 3, 2, 5] shuffle(my_list2) # ['A', 'D', 'B', 'C']
18. Преобразование строки в нижний и верхний регистры
str1 ="Python Programming" str2 ="IM A PROGRAMMER" print(str1.upper()) #PYTHON PROGRAMMING print(str2.lower()) #im a programmer
19. Форматирование строки
Этот код позволяет форматировать строку. Под форматированием в Python подразумевается присоединение к строке данных из переменных.
#example 1 str1 ="Python Programming" str2 ="I'm a <>".format(str1) # I'm a Python Programming #example 2 - another way str1 ="Python Programming" str2 =f"I'm a " # I'm a Python Programming
20. Поиск подстроки
Этот пример будет полезен для поиска подстроки в строке. Я реализую его двумя способами, позволяющими не писать много кода.
programmers = ["I'm an expert Python Programmer", "I'm an expert Javascript Programmer", "I'm a professional Python Programmer" "I'm a beginner C++ Programmer" ] #method 1 for p in programmers: if p.find("Python"): print(p) #method 2 for p in programmers: if "Python" in p: print(p)
21. Печать в одной строке
Мы знаем, что функция print выполняет вывод в каждой строке, и если использовать две функции print, они выполнят печать в две строки. Этот пример покажет, как выполнять вывод в той же строке без перехода на новую.
# fastest way import sys sys.stdout.write("Call of duty ") sys.stdout.write("and Black Ops") # output: Call of duty and Black Ops #another way but only for python 3 print("Python ", end="") print("Programming") # output: Python Programming
22. Разбиение на фрагменты
Этот пример покажет, как разбить список на фрагменты и разделить его на меньшие части.
def chunk(my_list, size): return [my_list[i:i+size] for i in range(0,len(my_list), size)] my_list = [1, 2, 3, 4, 5, 6] chunk(my_list, 2) # [[1, 2], [3, 4], [5, 6]]
На правах рекламы
Серверы для разработчиков — выбор среди обширного списка предустановленных операционных систем, возможность использовать собственный ISO для установки ОС, огромный выбор тарифных планов и возможность создать собственную конфигурацию в пару кликов, активация любого сервера в течение минуты. Обязательно попробуйте!

- Блог компании VDSina.ru
- Python
- Программирование
Примеры программ на языке Python
Данный пример чисто демонстрационный, так как его можно значительно улучшить.
from urllib import urlopen # из модуля urllib импортируем функцию urlopen u = urlopen("http://python.org") # открываем URL на чтение words = <> # связываем имя words с пустым словарём # (словарь — неупорядоченный [[ассоциативный массив]]) for line in u: # читаем u по строкам line = line.strip(" \n") # отбрасываем начальные и конечные пробелы for word in line.split(" "): # режем каждую строку на слова, ограниченные пробелами try: # блок обработки исключений words[word] += 1 # пытаемся увеличить words[word] на единицу except KeyError: # если не получилось (раньше words[word] не было) words[word] = 1 # присваиваем единицу # теперь словарь words содержит частоту встречаемости каждого слова. # Например, words может содержать pairs = words.items() # делаем из словаря список пар # pairs == [("яблоко",5), ("апельсин",12), ("груша",8)] pairs.sort(key=lambda x: x[1], reverse=True) # сортируем по убыванию второго элемента пары for p in pairs[:10]: # печатаем первые 10 элементов списка print(p[0], p[1])
Текст для версии 3.7.1
from urllib.request import urlopen # из модуля urllib импортируем функцию urlopen u = urlopen("http://python.org") # открываем URL на чтение words = <> # связываем имя words с пустым словарём # (словарь — неупорядоченный [[ассоциативный массив]]) for line in u: # читаем u по строкам line =line.decode("utf-8") # преобразуем байт-строку в строку line = line.strip(" \n") # отбрасываем начальные и конечные пробелы for word in line.split(" "): # режем каждую строку на слова, ограниченные пробелами try: # блок обработки исключений words[word] += 1 # пытаемся увеличить words[word] на единицу except KeyError: # если не получилось (раньше words[word] не было) words[word] = 1 # присваиваем единицу # теперь словарь words содержит частоту встречаемости каждого слова. # Например, words может содержать pairs = words.items() # делаем из словаря список пар # pairs == [("яблоко",5), ("апельсин",12), ("груша",8)] A= sorted (pairs, key=lambda x: x[1], reverse=True) # сортируем по убыванию второго элемента пары for p in A[:10]: # печатаем первые 10 элементов списка print(p[0], p[1])
Примеры работы с последовательностями править
Иллюстрируют особенности индексации элементов и срезов: при взятии среза нумеруются не сами элементы, а промежутки между ними.
>>> l = ['A', 'B', 'C', 'D', 'E'] # исходный список >>> # 0 1 2 3 4 5 # пронумерованные промежутки между элементами >>> # -5 -4 -3 -2 -1 # нумерация с конца >>> l[0:2] # срез от нулевого до второго промежутка ['A', 'B'] >>> l[1:-2] # срез от второго до второго с конца элемента ['B','C'] >>> l[1::2] # каждый второй элемент начиная с первого ['B', 'D'] >>> l[::-1] # все элементы в обратном порядке ['E', 'D', 'C', 'B', 'A']
Функции подобные range() поддерживают то же правило (для версий языка 2.x):
>>> range(2, 5) [2, 3, 4] >>> range(5) [0, 1, 2, 3, 4]
>>> [0]*10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] >>> [ i for i in range(5) if i%2==0] [0, 2, 4]
import sys # для получения объектов из вышележащих фрэймов стека
class CannotResolve(Exception): # класс исключения для случая ненахождения функции
pass
class Resolver(object): # класс, реализующий разрешение на этапе исполнения
emess = "Can't found appropriate signature of func %s() for call with" + \ " params %r" # сообщение об ошибке def __init__(self,name): # конструктор self.function_map = <> # словарь, отображающий типы параметров на функции self.default = None # функция по умолчанию self.name = name # имя функции для вывода сообщений об ошибках def __call__(self,*dt): # имитируем функцию, принимающую любое количество # позиционных параметров cls = tuple(map(type,dt)) # создаем tuple из типов переданных аргументов # функция type возвращает тип своего параметра # map вызовет type для каждого элемента из dt try: x = self.function_map[cls] # пытаемся получить функцию из словаря except KeyError: # если подходящей нет, if self.default is not None: # используем функцию по умолчанию x = self.default else: # если её нет - возбуждаем исключение raise CannotResolve(self.emess % (self.name,cls)) return x(*dt) # вызываем функцию и возвращаем результат
def overload(*dt): # декоратор для перегрузки в качестве параметров
# принимает типы параметров def closure(func): name = func.__name__ # получаем имя функции fr = sys._getframe(1).f_locals.get(name,Resolver(name)) # опускаемся на один шаг вниз по стеку и находим # локальную переменную с именем функции # если же ее нет, то используем новый # Resolver-объект fr.function_map[dt] = func # добавляем новую функцию к словарю # разрешения вызовов return fr return closure
def overdef(func): # для создания функции по умолчанию
name = func.__name__ # аналогично как и в функции overload fr = sys._getframe(1).f_locals.get(name,Resolver(name)) fr.default = func return fr
- теперь воспользуемся полученными декораторами
@overdef # это будет функция по умолчанию def f(*dt,**mp):
print ("Default call") # если нет явного return, то вернется None
@overload(int) # единственный параметр — целое def f(x):
return x + 1
@overload(str) # единственный параметр — строка def f(x):
return x + "1"
@overload(str,int) # строка и целое def f(x,y):
return x + str(y)
print (f»1″) # напечатает : 2 print (f»1″) # напечатает : 11 f(2,2) # напечатает : Default call
Управление контекстом выполнения править
Следующий пример из PEP343 иллюстрирует применение оператора with для защиты блока кода от одновременного выполнения двумя потоками:
from __future__ import with_statement # задействует оператор with в коде from contextlib import contextmanager from threading import Lock # Описание менеджера контекста @contextmanager def locked(lock): lock.acquire() try: yield finally: lock.release() # Определение блокировки myLock = Lock() # Применение оператора with locked(myLock): # print "Охраняемый блок кода. Блокировка будет освобождена при любом выходе из этого блока." #
Генератор чисел Фибоначчи править
Пример генератора чисел Фибоначчи и его использования:
def fibonacci(max): # генератор (а не функция, т.к. оператор return заменён на yield) a, b = 0, 1 while a max: yield a # return a, + запоминаем место рестарта для следующего вызова a, b = b, a + b # параллельное присваивание, которое выполняется одновременно и параллельно for n in fibonacci(100): # используем генератор fibonacci() как итератор print(n) # печатаем все числа Фибоначчи меньшие 100 через пробел
Альтернативный синтаксис доступа к элементам словаря править
Можно определить словарь, который в дополнение к обычному синтаксису доступа к значению по ключу d[key] может предоставлять синтаксически более наглядный доступ к атрибуту d.key в случае алфавитно-цифровых ключей:
class Entity(dict): # наследуем класс от __builtin__.dict def __getattr__(self, key): # этот метод будет вызван, если атрибут # с именем key не будет найден у экземпляра класса try: return self[key] # пытаемся вернуть элемент словаря except KeyError, k: # если такого элемента нет, то возбуждаем raise AttributeError, k # исключение AttributeError # по договоренности __getattr__ # не должно возбуждать других исключений def __setattr__(self, key, value): # этот метод будет вызван при присвоении self[key] = value # атрибуту key значения value def __delattr__(self, key): # а этот при удалении атрибута try: # с помощью del mydict.g del self[key] except KeyError, k: raise AttributeError, k def __repr__(self): # используется функцией repr return self.__class__.__name__ + "(" + dict.__repr__(self) + ")" d = Entity(a=1) d.b_100 = 100 assert d.a == d['a'] and d.b_100 == d['b_100']
Функтор с генерацией байтокода править
Пример эффективной реализации функтора, основанный на генерации байтокода во время исполнения. Этот пример демонстрирует следующие возможности/особенности Python:
- Возможность реализации специфических средств функционального программирования наработками, уже имеющимися в языке
- Работать с байтокодом в Python достаточно просто
- Зачастую генерация байтокода способна значительно ускорить исполнение.
Это только пример, он реализует всего одну операцию — сложение и имеет несколько других ограничений.
#------------------------------------------------------------------------------- import byteplay # специальный модуль для удобной работы с Python-байтокодом import new # для создания функции во время исполнения import functools # для update_wrapper import inspect # для получения информации о параметрах, принимаемых функцией #------------------------------------------------------------------------------- class FastFunctor(object): def __init__(self,func,code = None): self.func = None # здесь будем хранить результирующую функцию self.ofunc = func # а здесь исходную(original) функцию if code is None: # конструируем байтокод для вызова функции self.code = [(byteplay.LOAD_CONST,func)] rparams = inspect.getargspec(func)[0] # получаем список параметров, принимаемых функцией self.code.extend((byteplay.LOAD_FAST,i) for i in rparams) self.code.append((byteplay.CALL_FUNCTION,len(rparams))) else: # если же функтор создан из другого функтора, # то только копируем переданный байтокод self.code = code # создаем новый объект кода self.ocode = bp.Code.from_code(func.func_code) def __add__(self,obj): # этот метод вызывается для операции '+' code = self.code[:] # копируем байтокод if isinstance(obj,FastFunctor): # если прибавляемый объект - функтор # просто дописываем его код к нашему # после своего исполнения он "оставит" в вершине стека результат code.extend(obj.code) else: # иначе загружаем объект в стек code.append((byteplay.LOAD_CONST,obj)) # дописываем байтокод, складывающий два верхних элемента в стеке code.append((byteplay.BINARY_ADD ,None )) # создаем новый функтор, с байтокодом получения суммы return self.__class__(self.ofunc,code = code) def __call__(self,*dt,**mp): # этот метод будет вызван для операции вызова object() return self.fast()(*dt,**mp) # конструируем и вызываем функцию def fast(self): # конструируем функцию из байтокода if self.func is None: # если функция не была создана раннее code = self.code + [(bp.RETURN_VALUE,None)] # добавляем байтокод возврата oc = self.ocode # создаем объект кода из байтокода и другой информации bin_code = byteplay.Code(code, oc.freevars, oc.args, oc.varargs, oc.varkwargs, oc.newlocals, "%s>" % id(self), "%s>" % id(self), 0, "auto_generated code") # конструируем новую функцию из объекта кода self.func = new.function(bin_code.to_code(),globals()) # после этой операции для всех средств интроспекции # созданная функция будет выглядеть как оригинальная self.func = functools.update_wrapper(self.func,self.ofunc) return self.func
# Ниже представлено тестирование скорости объектов FastFunctor и SlowFunctor # (статья "Функциональное программирование на Python", см. сноску после блока кода) # из IPython (для удобства чтения лог немного изменен) # строки, начинающиеся с "In [XX]:" вводятся, остальные — вывод интерпретатора In [1]: import fastfunctor In [2]: func = lambda x : x + 1 # Создаем очень простую функцию In [3]: vl = 1 # Переменная, для предотвращения оптимизации In [4]: functor = fastfunctor.Functor(func) In [5]: %timeit (functor + functor + 1)(vl) # Тестируем "лобовой" способ 1000 loops, best of 3: 661 mks per loop # Очень медленно In [6]: functor2 = (functor + functor + 1) # Конструируем функтор один раз In [7]: %timeit functor2(vl) # и тестируем только непосредственно вызов 100000 loops, best of 3: 4.52 mks per loop # Значительно лучше In [8]: functor3 = (functor + functor + 1).fast() # Получаем результирующую функцию In [9]: %timeit functor3(vl) 1000000 loops, best of 3: 1.42 mks per loop In [10]: def of(vl): return x(vl) + x(vl) + 1 # Создаем функцию "вручную" In [11]: %timeit of(vl) 1000000 loops, best of 3: 1.42 mks per loop # Скорость полностью совпадает со # скоростью функтора In [12]: sfunctor = SlowFunctor(func) # Простая реализация функтора In [13]: sfunctor = sfunctor + sfunctor + 1 # In [14]: %timeit sfunctor(vl) # 100000 loops, best of 3: 12.6 mks per loop # Примерно в 9 раз медленнее, чем статический # вариант
Код SlowFunctor можно посмотреть здесь.
Приведенные значения времени следует рассматривать только в сравнении друг с другом.
ipython — расширение интерпретатора Python для интерактивной работы.
Используя эту технику, можно создать полноценный функтор, добавив функции для других операций ( __sub__, __div__ и другие) и расширив его на случай нескольких входных функций с разными аргументами.
Транспонирование матрицы править
Пример лаконичной реализации операции транспонирования матриц с использованием парадигмы функционального программирования.
from pprint import pprint # модуль pprint используется для удобного вывода на экран matrix = [[0.5, 0, 0, 0, 0], [ 1, 0.5, 0, 0, 0], [ 1, 1, 0.5, 0, 0], [ 1, 1, 1, 0.5, 0], [ 1, 1, 1, 1, 0.5]] matrix_t = list(zip(*matrix)) # непосредственно транспонирование pprint(matrix) pprint(matrix_t)
[[0.5, 0, 0, 0, 0], [1, 0.5, 0, 0, 0], [1, 1, 0.5, 0, 0], [1, 1, 1, 0.5, 0], [1, 1, 1, 1, 0.5]] [[0.5, 1, 1, 1, 1], [0, 0.5, 1, 1, 1], [0, 0, 0.5, 1, 1], [0, 0, 0, 0.5, 1], [0, 0, 0, 0, 0.5]]
Нахождение Факториала править
factorial = lambda x: factorial(x - 1) * x if x > 1 else 1
Решение квадратного уравнения править
Простая программа для решения квадратных уравнений (то есть вида: ax 2 +bx+c=0). Даются небольшие пояснения, каким образом уравнение решается в том или ином случае (например, для неполных квадратных уравнений).
a = int(input('a = ', )) # запрашиваем первый коэффициент b = int(input('b = ', )) # запрашиваем второй коэффициент c = int(input('c = ', )) # запрашиваем третий коэффициент if a!= 0 and b % 2 == 0 and c!= 0: # решение по сокращенной формуле, т.к. b - четное k = b / 2 d1 = k ** 2 - a * c k1 = (-k + d1 ** 0.5) / a k2 = (-k - d1 ** 0.5) / a print('так как коэффициент b - четное число, решаем по сокращенной формуле') print(f'k1 = k1>') print(f'k2 = k2>') if a != 0 and b % 2 != 0 and c != 0: # решение полного уравнения d = b ** 2 - 4 * a * c if d > 0: k1 = (-b + d ** 0.5) / (2 * a) print(f'дискриминант равен: d>') print(f'первый корень равен: round(k1, 2)>') k2 = (-b - d ** 0.5) / (2 * a) print(f'второй корень равен: round(k2, 2)>') elif d 0: print(f'так как дискриминант меньше нуля и равен: d>') print('действительных корней нет') else: k = -b / (2 * a) print(f'уравнение имеет один корень: k>') if a != 0 and c != 0 and b == 0: # решение уравнения при b = 0 if (- c / a) >= 0: k1 = (-c / a) ** 0.5 print(f'первый корень равен: k1>') k2 = (-1) * ((-c / a) ** 0.5) print(f'второй корень равен: k2>') if (- c / a) 0: print(f' -c / a = : -c / a>, т.е. < 0, поэтому действительных корней нет') if a != 0 and c== 0 and b != 0: # решение уравнения при с = 0 print(f'корень уравнения равен либо нулю, либо -b / a>') if a != 0 and b== 0 and c == 0: # решение уравнения при b = 0 и c = 0 print(f'корни уравнения равны нулю, a*x**2 = 0')
Что такое дробь править
cls @ECHO OFF title Folder Private if EXIST «HTG Locker» goto UNLOCK if NOT EXIST Private goto MDLOCKER
echo Are you sure you want to lock the folder(Y/N) set/p «cho=(more than)» if %cho%==Y goto LOCK if %cho%==y goto LOCK if %cho%==n goto END if %cho%==N goto END echo Invalid choice. goto CONFIRM
ren Private «HTG Locker» attrib +h +s «HTG Locker» echo Folder locked goto End
echo Enter password to unlock folder set/p «pass=(more than)» if NOT %pass%== [Ваш пароль] goto FAIL attrib -h -s «HTG Locker» ren «HTG Locker» Private echo Folder Unlocked successfully goto End
echo Invalid password goto end
md Private echo Private created successfully goto End
Вычисление числа Пи править
from decimal import * getcontext().prec = int(input('Введите начальную точность:')) # Десятичная точность. def Factorial(F): result = 1 for i in range(2, F + 1): result *= i return result b = int(input('Введите число слагаемых:')) # Число слагаемых. n = 0 k = 0 while k b: getcontext().prec += 20 # Увеличивается точность. n += (Decimal(Factorial(4 * k) / (Factorial(k) ** Decimal(4))) * Decimal( (1103 + 26390 * k) / (Decimal((4 * 99) ** Decimal(4 * k))))) k += 1 N = n n = Decimal(9801) / (Decimal(Decimal(2 * (Decimal(2 ** Decimal(0.5))) * N))) print(Decimal(n)) input()
Тренажёр для изучения координат править
Программа, интересная и как тренажёр для учебной работы с координатами (5-7 класс) и как пример несложной программы, которую может написать начинающий программист (8-9 класс)
from tkinter import import random okno = Tk() okno.geometry('1500x700+0+0') koordinatkax=random.randint(-15,15) koordinatkay=random.randint(-6,6) holst = Canvas(okno, width=1500, height = 600, bg = "white") holst.create_line(0,300,1500,300,fill="black",width=3,arrow=LAST) holst.create_line(750,600,750,0,fill="black",width=3,arrow=LAST) metka = Label(okno,font=20,text="Привет всем! Найди точку с координатами x o">+ str(koordinatkax) + ", y o">+ str(koordinatkay)) metka.place(x = 0,y = 620) metkaX = Label(holst,font=20,text="X") metkaX.place(x = 1475,y =310) metkaY = Label(holst,font=20,text="Y") metkaY.place(x =760,y = 10) #положительные метки Y metka1Y = Label(holst,font=20,text="1") metka1Y.place(x =725,y = 240) #метка 0 metka0 = Label(holst,font=20,text="0") metka0.place(x =725,y = 305) #положительные метки X metka1X = Label(holst,font=20,text="1") metka1X.place(x =792,y = 308) #отрицательные метки Y metka1Y = Label(holst,font=20,text="-1") metka1Y.place(x =725,y = 340) #отрицательные метки X metka1X = Label(holst,font=20,text="-1") metka1X.place(x =692,y = 308) for i in range(14): holst.create_line(0,50*i,1500,50*i,fill="black",width=1) holst.create_line(745,50*i,755,50*i,fill="black",width=3) for i in range(30): holst.create_line(50*i,0,50*i,600,fill="black",width=1) holst.create_line(50*i,295,50*i,305,fill="black",width=3) holst.place(x=0,y=0) knopka = Button(okno) knopka.place(x = 50,y = 650) def gdelevyklik(event): xo = koordinatkax*50+750 yo = 300-koordinatkay*50 if int(((event.x-xo)**2+(event.y-yo)**2)**0.5) 5: okno.title("Молодец! Левая кнопка мыши нажата" + str(event.x) + " " + str(event.y)) else: okno.title("Не правильно! Левая кнопка мыши нажата" + str(event.x) + " " + str(event.y)) holst.bind('', gdelevyklik)
Что можно запрограммировать на python примеры

Угадай число – компьютер выберет случайное число, а игроки должны будут по очереди угадывать число. При разработке используются: генератор случайных чисел, цикл while , условные конструкции if/else , переменные, целые числа и вывод на экран.
Камень, ножницы, бумага – мини-игра, в которую можно играть в одиночку с компьютером. При разработке потребуются знания генератора случайных чисел, вывод на экран, обработка ввода, цикл while и оператор if/else .
Генератор MadLibs – игра, в которой в пробелы нужно вставлять глупые слова, а после зачитывать. Для реализации понадобится понимание строк, переменных, конкатенация, ввод данных и вывод.
Генератор паролей – простое приложение, генерирующее случайный пароль. Из навыков потребуется генератор случайных чисел, работа со строками, числами, вывод на экран, последовательности.
Виселица – продвинутый вариант «угадай число». Игрок должен угадывать буквы в загаданном слове. Для упрощенной версии используйте только текст, без графики. Потребуется опыт работы со списками, генератор случайных чисел, работа со строками, обработка ввода, вывод, цикл while , операторы if/else . Для списка слов воспользуйтесь словарем Sowpods.
Симулятор игры в кости – понадобится генератор случайных чисел, который будет генерировать случайные числа от 1 до 6 , цикл while и вывод на экран для уточнения нужно ли сделать новый бросок, обработка ввода и цикл if/else для обработки введенного игроком значения.
Алгоритм двоичного поиска – структур данных, также известен как метод деления пополам. Возьмем список из 100 элементов, например, целые числа от 1 до 100 . Пользователю будет предложено ввести число, которое программа будет искать в данном списке и выводить соответствующий результат. Во время поиска берется среднее значение и сравнивается с искомым. Если значение найдено, то возвращается результат об успехе. Если значение меньше, то дальше будет аналогичным образом рассматривать левая часть, т. е. та, что меньше среднего значения. В противном случае, рассматривается правая часть. И так будет происходить до тех пор, пока значение не будет найдено или список не окажется пуст. Для реализации понадобится значение цикла, операторов if/else , ввод и вывод данных.
Текстовое приключение – простая игра квест, где игрок ходит по комнатам и получает описание комнат. Для реализации понадобится обработка ввода, вывод данных, операторы if/else , цикл while . При реализации понадобится следить за направлением движения, создавать стены, двери, ограничение на перемещение.
Проекты Python для разработчиков Python среднего уровня

Будильник – приложение, которое будет присылать уведомления в назначенное время. Включите в него музыку, видео или картинки.
Крестики нолики – игра, в которой два игрока рисуют на поле из 9 квадратиков каждый свою фигуру (крестик или нолик) до тех пор, пока не получат линию из 3-х одинаковых фигур или пока все квадратики не будут заполнены. В данном случае игру можно реализовать для одного игрока с компьютером, основная сложность будет в программировании ходов компьютера. Для реализации графики воспользуйтесь библиотекой PyGame .
Случайная статья в Википедии – в этом проекте приложение выдает случайную ссылку на статью Википедии. Программа уточняет у пользователя отобразить ли случайную статью в Википедии и при положительном ответе выводит страницу.
Калькулятор – проект для реализации калькулятора с GUI, кнопками, возможностью ввода нескольких чисел, операций сложения, умножения, получения корня, возведения в степень, учета скобок, памяти. Для реализации могут понадобиться такие библиотеки, как Tkinter или PyQt , которые позволят создать графический интерфейс.
Таймер обратного отсчета – настольное приложение с интерфейсом, в котором показывается таймер обратного отсчета до установленного события. В данном приложении можно установить таймер, сбросить таймер, выводить уведомления о наступлении события или заранее до наступления события.
Reddit-бот. Reddit – соцсеть, в которой люди обсуждают интересы, делятся фото, видео, ссылками и т. д., на странице пользователя и на страницах сообществ, соответствующих тем (сабреддиты). Запрограммируйте бота для мониторинга этих сабреддитов, бот может предоставлять полезную информацию для читателей, экономя время модераторов сабреддита.
Instagram*-бот – бот предназначен для автоматизации таких задач, как лайк, комментарий, подписка на учетные записи других людей. Ограничения по частоте, иначе в случае чрезмерной активности бот может быть деактивирован.
Стеганография в Python. Стеганография – передача или хранение информации с учетом сохранения в тайне самого факта такой передачи (хранения). В отличие от криптографии, скрывающей содержимое сообщения, стеганография скрывает существование сообщения. Сообщение будет выглядеть как что-либо иное, например, как изображение, статья, список покупок и т. д.
* Продукт Meta, деятельность признана экстремистской, запрещена на территории России.
Проекты Python для продвинутых разработчиков Python

MP3-плейер – проект для прослушивания музыки, создайте MP3-плеер с листами, перемоткой, зацикливанием аудиозаписей и другими полезным функционалом. Для реализации могут понадобится библиотеки для работы с GUI Tkinter или PyQt , для работы с аудио может понадобится библиотека librosa .
Тест скорости набора текста – проект позволит определить скорость набор текста пользователем. Реализуйте графический интерфейс с помощью библиотеки для работы с GUI, например, Tkinter или PyQt . От пользователя потребуется вводить текст. После ввода текста приложение выведет информацию о скорости набора, точности и количестве набранных слов в минуту. Пример проекта.
Менеджер файлов – проект для работы с файлами в системе. Например, аналог проводника в Windows. С помощью этого приложения можно просматривать, редактировать, перемещать, удалять файлы в системе. Проект затронет различные области знаний языка Python.
Создание блокчейна. Блокчейн (цепь из блоков) – непрерывная последовательность блоков, содержащих информацию. Используется как финансовый инструмент, но применим и в других областях. Для реализации понадобится библиотеки для работы с HTTP и руководство.
Проверка плагиата – приложение для проверки плагиата проверяет текст на принадлежность указанному автору. Для реализации понадобится библиотека обработки естественного языка (такие библиотеки, как NLTK , TextBlob ) и API Google.
Графический редактор – редактор картинок, наподобие Пэинта или Фотошопа. Для реализации понадобится библиотека для работы с GUI, например, Tkinter или PyQt и виджет Canvas , который позволит работать с примитивами вроде линии, прямоугольника, текста, изображения.
Расширение сравнения цен – проект, который позволит сравнивать цены на разных сайтах, на отели, продукты, технику и т. д.
Загрузчик картинок с Instagram – используя заданные учетные данные, приложение будет искать фотографии друзей, размещенные в Instagram и загружать их фотографии.
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»
Проекты Python в веб-разработке

Блог – создание блога позволит продемонстрировать навыки веб-разработки. Помимо знания Python, тут понадобится знание HTML и CSS, а также опыт работы с базами данных.
Создание интернет-магазина – создание интернет-магазина позволит как следует прокачать навыки бэкенда. Потребуется создать базу данных с таблицами, содержащими данные пользователей, товаров, поставщиков. Также потребуется работать с запросами к базе данных. Этот проект позволит погрузиться в предметную область.
Блокировщик веб-сайтов – это аналог популярных блокировщиков рекламы, который позволит блокировать назойливую рекламу.
Приложение для создания заметок – программа позволяет пользователю записывать заметки и просматривать записанное. В приложении придется сделать аккаунты и разделение доступов для того, чтобы у каждого пользователя были свои заметки. Благодаря тому, что это веб-проект доступ к заметкам открыт откуда угодно. Для реализации этого проекта подойдет фреймворк Django.
Агрегатор контента – это сайт, который собирает популярные статьи на конкретные темы и выдает пользователю. Для реализации понадобится база данных (например, MySQL или PostgreSQL) и библиотеки Python для работы с HTTP-запросами и парсингу контента.
Онлайн regex – инструмент для проверки и составления регулярных выражений. Регулярные выражения – это гибкий способ найти информацию в текстовом документе с хитрыми условиями. Например, с помощью регулярных выражений можно составить маску поиска для номера телефона, email или интернет-ссылки. Для реализации понадобится стандартная библиотеке re (содержит все необходимое для работы с регулярными выражениями) и веб-фреймворк, например, Django.
URL Shortener – проект позволит преобразовывать длинные, неудобные ссылки в короткие, уменьшая количество символов в URL. Для реализации данного проекта понадобится написать страницу с полем для ввода длинной ссылки, кнопкой и полем для вывода короткой ссылки. Также понадобится база данных для хранения ссылок. При открытии короткой ссылки сервер будет проверять наличие ссылки в базе и при наличии – перенаправлять пользователя по заданному ранее адресу. При отсутствии – будет выводиться страница 404.
Викторина – приложение, которое задает пользователям набор вопросов и подсчитывает очки за правильные ответы, а после выдает результат. При реализации можно сделать вопросы с таймером или вопросы, на которые будут сразу выдаваться информация о правильности ответов. Для проекта понадобится веб-фреймворк, например, Django и база данных, для хранения вопросов и ответов.
Проекты Python с искусственным интеллектом

Обработка фотографий – приложение для обработки фотографий в заданном стиле (художника или цветовой гамме). Реализация данного приложения затрагивает компьютерное зрение и нейросети. Можно применить генеративно-состязательные нейронные сети (GAN).
Анализ новостей из интернета – программа аналитического характера, анализирует новости из интернета и делает на основании их прогнозы стоимости ценных бумаг, курсов акций или валют. Ожидать точных прогнозов не стоит, но этот проект позволит поработать с обработкой естественных языков (NLP), анализом временных рядов, парсингом и краулингом сайтов.
Распознавание лиц – проект, который встречается даже во время фотосъемки на телефон. Также можно добавить функционал дорисовки чего-либо: усов, кошачьих ушей, веснушек и т. д. Таких проектов много, но создать такой проект самостоятельно не менее интересно.
Подсчет числа элементов на изображении – проект связан с подсчетом кол-ва элементов на фотографии. Такие проекты используются на крупных предприятиях, например, для подсчета яиц или какой-либо другой штучной продукции в большом объеме, которую сложно подсчитать вручную или под которую сложно спроектировать универсальный механизм.
Массовое переименование файлов – допустим, есть большое количество изображений, которые необходимо переименовать. Задача: обучить нейронную сеть автоматически выполнять эту задачу в соответствии с параметрами изображения (размер, дата создания).
Распознавание эмоций на видео – проект распознавания эмоций на видео. Для подобных проектов используются рекуррентные сети.
Семантическое определение границ – одна из классических задач для сверточных нейронных сетей – это выделение границ, разбитых на классы.
Семантическая сегментация – позволяет разделить объекты на классы по их структуре, ничего не зная об этих объектах, то есть еще до их распознавания. Например, семантическая сегментация 3D-изображений выделяет отдельные сегменты изображений МРТ головного мозга.
Инструменты для разработки на Python
Среды разработки (IDE)

PyCharm – IDE от компании JetBrains, поддерживает веб разработку на Django.

IDLE – IDE для Python, созданная с помощью библиотеки Tkinter от создателя Python. Поставляется вместе с Python, кроссплатформенная.
Базовые инструменты
Setuptools – это библиотека процессов разработки пакетов, предназначенная для облегчения упаковки проектов Python за счет расширения стандартной библиотеки Python distutils .
virtualenv – менеджер виртуальной среды. Позволяет создавать виртуальные среды с пакетами. Разные песочницы имеют разные наборы пакетов, разных версий. Одну и ту же песочницу могут использовать разные проекты.
Pip – система управления пакетами, используется для установки и управления программными пакетами, написанными на Python.
Кроссплатформенная разработка

BeeWare – набор инструментов для разработки и распространения нативных приложений на Python. Включает в себя Toga – кроссплатформенный инструмент для GUI, Briefcase – инструмент для упаковки проектов на языке Python в распространяемые артефакты для доставки конечным пользователям, Rubicon ObjC – библиотека для работы с Object C на iOS и Mac с помощью Python, Rubicon Java – для работы с Java-библиотеками на Python.

Kivy – библиотека с открытым исходным кодом для быстрой разработки приложений. Кроссплатформенная, с поддержкой GPU-ускорителя, дружественная к разработке бизнес-приложений.
Web разработка
Bottle – быстрый и простой фреймворк для маленьких веб-приложений. Не имеет зависимостей, кроме Python Standard Library.
CherryPy – веб-фреймворк на Python. Спроектирован для быстрой разработки веб-приложений. Представляет надстройку над HTTP-протоколом. Может выступать в качестве веб-сервера, может работать под управлением другого серверного приложения, поддерживающего протокол WSGI. Не занимается задачами обработки шаблонов для ввода данных, доступом к БД, авторизацией пользователя. Расширяется за счет фильтров, простых интерфейсов.
Django – фреймворк для разработки веб-приложений на языке Python с открытым исходным кодом. Используется для бэкенда веб-приложений. Использует шаблон MVC.
Библиотеки для работы с GUI
PyQt – GUI фрэймворк для python позволяет создавать приложения с графическим пользовательским интерфейсом. Разработан британской компанией Riverbank Computing. Работает на платформах, поддерживаемых Qt: Linux. Unix, Mac, Windows. Большой набор виджетов для графического интерфейса. Стили виджетов. Доступ к БД(ODBC, MySQL, PostgreSQL, Oracle)
Tkinter – Кроссплатформенная графическая библиотека, поставляется вместе с Python. Распространены на Linux/Unix. Написана создателем Python – Гвидо ван Россумом.
Библиотеки для создания игр
PyGame – набор модулей Python для написания компьютерных игр и мультимедиа приложения. Базируется на мультимедийной библиотеке SDL . Можно разрабатывать 2D-, 3D-игры. Также можно писать игры для мобильных устройств на базе Android.
Cocos 2D – кроссплатформенный фреймворк для разработки приложений и игр. Открытое программное обеспечение, написанное на языке Python.
Panda 3D – полноценный 3D движок с большим русскоязычным сообществом, где придется писать код, используя API движка. Включает в себя графику, звук, ввод-вывод, обнаружение столкновений. Открытое программное обеспечение.
Прочее
librosa – библиотека для анализа музыки и аудио. Позволяет обрабатывать аудио в виде временных рядов, извлекать признаки: темп, бит, такт, интервал, ритм и работать с Мел-кепстральными коэффициентами ( MFCC ).
NLTK – пакет программ для символьной и статистической обработки естественного языка, написанных на Python. Библиотека поддерживает задачи классификации, стемминга, маркировки, синтаксического анализа и семантического рассуждения в Python.
TextBlob – инструмент для новичков в NLP в Python. Библиотека построена на NLTK и представляет простой интерфейс для библиотеки NLTK. Позволяет решать задачи анализа настроений, POS-маркировки или извлечения именных фраз.
Сферы применения языка Python

Python – это не просто язык программирования. Это целый мир со своими возможностями, трудными задачами и способами их решений. Новичку, который только начал знакомство с языком, довольно трудно осознать, в каких областях могут пригодиться его знания.
На самом деле, выбор довольно огромный. Python с каждым днем всё активнее завоевывает рынок, и на сегодняшний день он занимает одну из лидирующих позиций среди все остальных языков, соревнуясь за первенство с «монолитами» индустрии.
Конечно, Питон никогда не сможет заменить низкоуровневые C и C++, ведь именно они способны практически полностью контролировать процессор, не займет место Java, предназначенный для разработки сложнейших приложений. Также, Python нельзя назвать аналогом JavaScript, который поддерживается огромной долей сайтов.
Но почему Питон всё ещё движется к своему Олимпу? По какой причине его не вытиснили конкуренты? Ведь даже сам создатель Python, Гвидо ван Россум, в далеком 1989 году заявил, что не пророчит своему языку популярность на рынке.
На самом деле, с Питоном всё максимально прозрачно – он простой и универсальный, поэтому может применяться для работы по многим направлениям.
Web-разработка
На Питоне можно делать весь backend интернет-ресурса, который будет выполняться на сервере. Делается это при помощи специальных фреймворков (Django и Flask), написанных на этом языке. С их помощью упрощается процесс обработки адресов, обращение к базам данный и создание HTML, отображающихся на пользовательских страницах.
Онлайн-курс Python-разработчик
Поможем освоить профессию Python-разработчика: от Git и алгоритмов до django и unit-тестирования
На сегодняшний день сторонними разработчиками написано большое количество дополнительного инструментария, направленно на реализацию сетевых приложений. К примеру, инструмент HTMLGen позволяет создавать готовые классы под страницу на HTML, используя для этого язык Питон. А пакет mod_python облегчает запуск сценариев Apache, обеспечивая при этом стабильную работу шаблонов Python Server Pages.
Графический интерфейс
Если говорить о визуальной составляющей в сфере IT, то и здесь Python может показать себя как вполне эффективный инструмент, решающий массу задач. Создавая современные графические интерфейсы на Питоне, можно легко подстроиться под стилистику ОС, в чьей среде создается приложение. Специально для этих целей были созданы дополнительные библиотеки для построения интерфейса – PythonCard и Dabo, облегчающие процесс работы.
Базы данных
Разработчики современной версии Питона создали максимально простой и понятный доступ практически к любым базам данных. Так, на сегодняшний день, в рабочей среде языка находится программный интерфейс, который позволяет пользоваться базами прямиком из сценария с помощью запросов SQL. Также, код, написанный на Python, может с минимальными доработками использоваться для баз данных MySQL и Oracle.
Системное программирование
Ещё одна монетка в копилку возможностей Python – это интерфейсы языка, которые позволяют управлять службами операционных систем Windows, Linux и др. Благодаря этому, Питон открывает массу возможностей для создания портативных программ. Не секрет, что этот язык применяется для написания приложений, используемых системными администраторами. Таким образом, Python ускоряет поиск и открытие файлов, запуск приложений, облегчает вычисления и многое другое.
Сложные вычислительные процессы
Это та самая сфера, где Питон может потягаться в своих возможностях с FORTRAN или C++. Специальное расширение NumPy, написанное для математических расчётов, прекрасно функционирует с массивами, интерфейсами уравнений и другими данными. Как только расширение устанавливается на компьютер, Python без проблем проходит интеграцию с библиотеками формул.
Но NumPy предназначен не только для вычислений. Помимо своей основной задачи, с его помощью можно создавать анимированные элементы и прорисовывать объекты в среде 3D, производя при этом параллельные вычисления. Например, популярное дополнение ScientificPython может похвастаться собственными библиотеками, которые созданы для вычислительных процессов в сфере науки.
Помимо расчётов, Python позволяет визуализировать полученные данные, что довольно удобно.
Машинное обучение
Помимо основного инструментария, у Python есть дополнительные библиотеки и фреймворки, позволяющие работать в области машинного обучения. Особой популярностью пользуются scikit-learn и TensorFlow. Scikit-learn отличается тем, что в него уже встроены самые распространенные алгоритмы обучения. TensorFlow, в свою очередь – это низкоуровневая библиотека, которая открывает возможности для создания алгоритмов пользователя.
Процессы машинного обучения, основанные на языке программирования Python, помогают реализовывать системы распознавания лиц и голоса, создавать нейронные сети, глубокое обучение и многое другое.
Автоматизация процессов
Сегодня одним из самых востребованных способов использования языка Питон является создание мелких скриптов, автоматизирующих некоторые рабочие процессы. Например, можно написать вполне простой код, который будет «самостоятельно» работать с письмами на электронной почте. Если человеку необходимо отсортировывать письма с определенными ключевыми словами или фразами, то вручную это сделать довольно проблематично, а вот скрипт справится с этой задачей без проблем.
Почему для этого лучше всего использовать именно Python? Во-первых, он отличается вполне простым синтаксисом, который позволяет с легкостью разрабатывать сценарии. А во-вторых, сам код не проходит компиляцию перед запуском, что заметно облегчает процесс отладки.
Игровая индустрия
Зря многие люди недооценивают геймдейв, ведь именно благодаря нему появилось так много гаджетов, разработок и значительно улучшилась графика. Конечно, для крупных проектов Python вряд ли подойдет, его инструментарий в данной области несколько ограничен, но для фанатов этого языка собрать небольшие приложения и инди-игрушки — не такая уж и сложная задача. Для мультиплатформенных игр лучше всего подойдет движок Unity, управляемый с помощью языка C#. Этот инструмент как раз и создан для таких целей.
Изучая Python, не стоит бояться пробовать свои силы, выполняя простые задачи, создавая элементарные скрипты, даже если они кажутся вам слишком шаблонными. Ведь только таким образом вы сможете подобрать для себя подходящее направление, в котором захотите развиваться и строить карьеру.
