Какие программы написаны на python
Перейти к содержимому

Какие программы написаны на python

  • автор:

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

Программы написанные на Python

Python является очень гибким языком и может использоваться в разных направлениях программирования. Он очень прост при изучении так как на своём борту имеет огромное количество готовых методов. Пайтон является лучшим в сфере машинного обучения.

Игры написанные на Python:

Battlefield 2 — сетевая компьютерная видеоигра в жанре тактического шутера с элементами стратегии и ролевой игры. Python использовался только для разработки серверной части игры и немного скриптов, написанных для логики игры.

Sims 4 — это самая известная игра, сюжет которой направлен на повторение реальной жизни. Пайтон был использован исключительно для реализации возможности добавления модификаций в игру. Это нужно для поддержки интереса к игре на протяжении большого количества времени.

Civilization 4 — одна из самых популярных стратегий, Python здесь использовался при написании почти всей игры.

Остальное ПО, созданное при помощи питона:

GIMP — это предустановленный графический редактор в операционной системе Linux. Python здесь был использован для создания фильтров и скриптов.

Blender — это программа предназначена для работы с 3D графикой и пайтон в ней нужен для работы логики это самой программы.

Проекты полностью написан на Python

Face-registration — позволяет определять лица людей

Detectron — позволяет определять различные предметы на изображениях

Keras – API предназначенный для создания экспресс экспериментов

Примеры программ на языке 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
  1. теперь воспользуемся полученными декораторами

@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 = " + str(koordinatkax) + ", y = " + 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) 

30 лучших Python-проектов на GitHub на начало 2022 года

Наверняка многим из вас любопытно было бы узнать, какие Python-проекты являются самыми популярными на начало 2022 года. GitHub, безусловно, лучшее место для получения этой статистики. Пусть здесь можно найти не все проекты, но ему нет достойной альтернативы.

  • 7 репозиториев, повышающих производительность;
  • 3 репозитория с фреймворками;
  • 5 репозиториев, которые облегчают машинное обучение;
  • 4 репозитория, которые облегчают реальную жизнь;
  • 6 репозиториев, которые собирают и систематизируют полезную информацию;
  • 5 репозиториев, которые чему-то учат.

Теперь давайте посмотрим, как мы можем получить ранжированный список из GitHub API с помощью нескольких строк кода.

API, поиск и GitHub

Официальную документацию по API можно найти на этой странице. Я не буду её пересказывать, давайте сразу к делу. Самое прекрасное, что нам не нужно регистрироваться или запрашивать ключ API для использования этого способа. Конечно, у него есть ограничение по скорости — до 10 запросов в минуту, но этого вполне достаточно для тестирования кода и подключения ранжированного списка.

Прежде всего используем requests-модуль Python. Наверняка вы с ним знакомы. Также возьмём Pandas для преобразования данных.

import requests import pandas as pd

URL-адрес https://api.github.com/search/repositories строится на основе документации API. Поскольку мы ищем только проекты на основе Python, указываем аргумент language:python в запросе. Затем добавляем сортировку результатов поиска по количеству звёзд и упорядочиваем по убыванию.

Затем используем requests для обращения к API. Для этого подойдёт метод GET. Потом можно преобразовать результаты в словарь Python.

res = requests.get(url) res_dict = res.json()

Все результаты поиска будут в массиве с ключом «items». Размер страницы по умолчанию равен 30, так что мы сразу видим 30 лучших репозиториев.

repos = res_dict['items'] len(repos)

Кстати, на момент отправки запроса в общей сложности было 8 046 758 репозиториев Python.

Теперь давайте преобразуем массив элементов в фрейм данных Pandas.

Теперь удаляем все столбцы, которые не нужны, а ещё добавим столбец под названием year_on_github , чтобы узнать, когда этот проект был создан на GitHub.

repo_df = repo_df[['name', 'full_name', 'html_url', 'created_at', 'stargazers_count', 'watchers', 'forks', 'open_issues']] repo_df['created_at'] = pd.to_datetime(repo_df['created_at']) repo_df['created_year'] = repo_df['created_at'].dt.year repo_df['years_on_github'] = 2022 - repo_df['created_at'].dt.year

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

1. thefuck (6 место, 65 988 звезд)

Этот инструмент может помочь нам исправить ошибки в предыдущей команде, когда мы используем консоль, например, в среде Linux или GitBash.

2. httpie (9 место, 53 255 звезд)

HTTPie — это HTTP-клиент командной строки. Его цель — сделать взаимодействие CLI с веб-сервисами максимально удобным для человека. HTTPie предназначен для тестирования, отладки и общего взаимодействия с API и HTTP-серверами. Команды http и https позволяют создавать и отправлять произвольные HTTP-запросы. Они используют простой и естественный синтаксис и обеспечивают форматированный и подсвеченный вывод.

3. you-get (12-е место, 42 791 звезда)

Это крошечная утилита командной строки для загрузки мультимедийного содержимого (видео, аудио, изображений) из интернета, если нет другого удобного способа сделать это.

4. LocalStack (16 место, 38 008 звёзд)

Этот репозиторий представляет собой эмулятор облачного сервиса, который запускается в одном контейнере на вашем ноутбуке или в вашей среде CI. С помощью LocalStack вы можете запускать приложения на своём локальном компьютере, не подключаясь к удаленному поставщику облачных услуг! Независимо от того, тестируете ли вы сложные приложения CDK или конфигурации Terraform или только начинаете изучать сервисы облачных провайдеров, LocalStack помогает ускорить и упростить рабочий процесс тестирования и разработки.

5. Shadowsocks (20-е место, 33 099 звёзд)

Shadowsocks — это бесплатный проект протокола шифрования с открытым исходным кодом, который широко используется в Китае для обхода интернет-цензуры. Репозиторий удалили из -за нарушения правил сервиса к моменту написания статьи.

6. rich (23-е место, 32 075 звёзд)

Этот репозиторий упрощает добавление цветов и стилей к выводу терминала. Он также может отображать красивые таблицы, прогресс-бары, делать синтаксическую подсветку кода, трейсбеки и многое другое — прямо из коробки.

7. certbot (30-е место, 28 587 звёзд)

Certbot является частью усилий EFF по шифрованию всего интернета. Безопасная связь в интернете основана на протоколе HTTPS, который требует использования цифрового сертификата, позволяющего браузерам проверять подлинность веб-серверов. Веб-серверы получают свои сертификаты от доверенных третьих сторон, называемых центрами сертификации (ЦС). Certbot — это простой в использовании клиент, который извлекает сертификат из Let’s Encrypt — открытого центра сертификации, запущенного EFF, Mozilla и другими — и развертывает его на веб-сервере.

Репозитории с фреймворками

Все эти репозитории представляют собой очень известные фреймворки, предназначенные либо для веб-разработки, либо для разработки другого программного обеспечения.

1. flask (7 место, 57 584 звезды)

Думаю, не нужно долго распинаться о том, что это. Если вы используете Python для веб-разработки, вы наверняка когда-либо использовали flask или, по крайней мере, знаете его.

2. scrapy (14 рейтинг, 42 471 звезда)

Это фреймворк, который необходимо изучить, если вы хотите использовать Python для парсинга веб-страниц. Он упрощает и автоматизирует работу по извлечению информации с веб-страниц. Используется для сканирования сайтов и извлечения структурированных данных с их страниц. Его можно использовать для самых разных целей, от интеллектуального анализа данных до мониторинга и автоматизированного тестирования.

3. fastapi (15 рейтинг, 40 363 звезды)

Ещё один популярный фреймворк для бэкенд-разработки. Его цель состоит в том, чтобы использовать наименьшее количество кода для написания обычных веб-API. Если ваш бэкэнд не слишком сложен, используйте его.

Репозитории, облегчающие машинное обучение

1. models (5 место, 72 417 звёзд)

Если вы слышали о машинном обучении с использованием Python, то наверняка что-нибудь слышали и о TensorFlow. Этот репозиторий также называется «TensorFlow Model Garden». Он организует модели машинного обучения и реализует их с помощью TensorFlow с примерами. Модели могут быть официально от TensorFlow, от некоторых известных исследовательских проектов или коммьюнити. Они могут экономить время, когда нужно использовать любые модели машинного обучения в TensorFlow.

2. keras (8-е место, 53 638 звёзд)

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

3. Face_recognition (13 рейтингов, 42 762 звезды)

Как следует из названия, этот проект может распознавать лица и управлять ими с помощью Python или командной строки. Утверждается, что это самая простая в мире библиотека распознавания лиц. Просто добавьте изображение с человеческими лицами, оно идентифицирует и найдет его. Затем вы даже можете изменить его, используя некоторые готовые функции.

4. Real-Time-Voice-Cloning (21-е место, 32 607 звёзд)

Я бы скорее поместил это в категорию машинного обучения, так как это потрясающий проект, но важно, чтобы им не злоупотребляли. По сути, он может «выучить» чей-то голос по 5-секундной записи речи, а затем использовать «выученный» голос, чтобы говорить что угодно. Ниже демонстрационное видео от автора.

5. DeepFaceLab (27 место, 30 651 звезда)

Если вы видели «дипфейковые» ролики, скорее всего, они созданы этим на базе этого проекта. Он запоминает человеческое лицо и «имплантирует» его в другое видео, чтобы заменить исходное лицо на то, которое нужно добавить. Может быть много этических проблем, но этот проект действительно потрясающий.

Репозитории, которые облегчают реальную жизнь

Эти репозитории написаны на Python, но используются в реальной жизни. Они могут либо сэкономить наше время, либо позволить нам делать какие-то интересные штуки.

1. Hоmе Assistant ​​(11 место, 48 763 звезды)

Этот репозиторий представляет собой Hоmе Assistant с открытым исходным кодом, которая ставит на первое место локальный контроль и конфиденциальность. Работает благодаря огромному коммьюнити экспертов и энтузиастов DIY. Идеально подходит для работы на Raspberry Pi или локальном сервере. Используется во многих успешных продуктах, таких как Amazon Alexa и Google Cast.

2. openpilot (24 место, 31 998 звёзд)

Этот репозиторий представляет собой систему помощи водителю с открытым исходным кодом. Выполняет функции адаптивного круиз-контроля (ACC), автоматического центрирования полосы движения (ALC), предупреждения о лобовом столкновении (FCW) и предупреждения о выходе из полосы движения (LDW) для растущего числа поддерживаемых марок, моделей и годов выпуска автомобилей. Однако вам нужно купить их продукт и установить его на свой автомобиль. Это не совсем DIY, но жизнь действительно облегчает.

3. XX-Net (26 место, 31 002 звезды)

Это прокси-инструмент для обхода китайского «Великого файерволла», позволяющий китайским интернет-пользователям посещать сайты вроде YouTube и Facebook.

4. 12306 (28 место, 30 401 звезда)

12306 — это номер горячей линии для бронирования билетов на поезд в Китае, он также использовался в качестве доменного имени, когда они запустили онлайн-бронирование около 15 лет назад. Этот репозиторий представляет собой инструмент автоматического бронирования билетов, потому что мест может не хватать в часы пик, и забронировать их довольно сложно. Вот так разработчики решают проблемы :).

Репозитории, которые собирают и систематизируют полезную информацию

1. public-apis (1-е место, 173 658 звёзд)

В этом репозитории собраны сотни бесплатных API, которые можно использовать для разработки программного обеспечения и веб-приложений. Многие из них очень интересны, например Fun Facts, который случайным образом генерирует забавный факт каждый раз, когда мы его вызываем. Есть также несколько очень полезных API, таких как Colormind API, которые можно использовать для создания великолепных цветовых кодов, которые потенциально можно использовать в визуализации данных. Кроме того, существует множество открытых государственных API, которые можно использовать для получения статистических данных о стране.

2. awesome-python (4 место, 112 609 звёзд)

В этом репозитории собраны сотни других «потрясающих» Python-проектов с GitHub . Проекты разбиты по категориям, чтобы было проще найти нужный.

3. awesome-machine-learningе (10-е место, 52 487 звёзд)

Как и в предыдущем случае, в этом репозитории собраны проекты машинного обучения.

4. funNLP (17 место, 35 922 звезды)

Это китайский репозиторий, хотя он будет понятен и англоязычной аудитории. Однако в документации нет англоязычной версии. Он предоставляет словари НЛП, (чувствительные слова, наборы инструментов НЛП и некоторые учебные материалы).

5. interview_internal_reference (19 рейтинг, 33 135 звёзд)

Ещё один китайский репозиторий, в котором собраны частые вопросы на интервью от таких известных компаний, как Huawei. Он также предоставляет базовые знания, которые вы должны знать как разработчик данных, такие как алгоритмы и принципы проектирования баз данных.

6. Deep-Learning-Papers-Reading-Roadmap (24-е место, 31 521 звезда)

Если вы хотите изучить машинное обучение с нуля, этот репозиторий может стать хорошим началом. Он рисует «дорожную карту» развития машинного обучения в истории, используя научные статьи.

Репозитории, которые чему-то учат

Эти репозитории не предназначены для кода. Их можно рассматривать как «книгу» с открытым исходным кодом. Информация, которую они содержат, может быть использована для изучения чего-либо.

1. system-design-primer (2-е место, 157 775 звёзд)

Этот репозиторий — настоящее сокровище для тех, кто хочет начать карьеру системного архитектора. Он знакомит с множеством полезных концепций. Вы можете найти почти всё, что хотите знать, например, когда использовать SQL или NoSQL, как проектировать распределенную реляционную базу данных и что такое обратный прокси.

2. Python-100-Days (3-е место, 113 812 звёзд)

Это репозиторий на китайском языке. В нём знания по программированию на Python разделены на 100 частей, чтобы учащиеся могли пройти весь курс за 100 дней, если они будут упорно изучать по одной части в день. К сожалению, он не переведен на английский язык.

3. PayloadsAllTheThings (18 рейтингов, 33 407 звёзд)

В этом репозитории представлен список полезных нагрузок и средств обхода безопасности веб-приложений. Если вы хотите быть опытным веб-разработчиком, который хочет избежать популярных дыр и ловушек в системе безопасности, этот материал является обязательным для изучения. Почти все концепции реализованы на примере Python.

4. AiLearning (22-е место, 32 517 звёзд)

Репозиторий на китайском языке, обучающий от основ Python до фреймворка PyTorch ML.

5. d2l-zh (29 место, 29, 618 звёзд)

Книга называется «Погружение в глубокое обучение». Хотя сам репозиторий китайский, английскую версию (исходную версию) можно найти без особого труда.

Заключение

Очевидно, что рейтинг может не совсем верно отражать реальную ценность того или иного репозитория. Это сухие статистические данные, основанные на количестве закладок и оценок. А как известно, есть ложь, большая ложь и статистика. Тем не менее, кое-что интересное найти в этом списке можно.

Надеюсь, и вы тоже найдёте что-то для себя.

Что ещё интересного есть в блоге Cloud4Y

Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем не чаще двух раз в неделю и только по делу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *