Python программы: 22 полезных примера кода на 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={1:"hello", 2:"world"}
dic2={3:"Python", 4:"Programming"}
merge(dic1,dic2) # {1: 'hello', 2: 'world', 3: 'Python', 4: 'Programming'}

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 {str1}"    # 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 для установки ОС, огромный выбор тарифных планов и возможность создать собственную конфигурацию в пару кликов, активация любого сервера в течение минуты. Обязательно попробуйте!

Подписывайтесь на наш чат в Telegram.

Интерпретатор brainfuck | Python 3 для начинающих и чайников

Сегодня я решил что-нибудь написать на python. Что-нибудь простенькое, но не очень. Решил остановиться на интерпретаторе brainfuck.

Для тех, кто не знает, о чем это я говорю, поясняю: язык brainfuck для хранения данных использует ячейки (по-хорошему бесконечное число ячеек) и состоит всего из восьми команд, поэтому выучить его будет легко.

Вот эти команды:

Команда BrainfuckОписание команды
>перейти к следующей ячейке
<перейти к предыдущей ячейке
+увеличить значение в текущей ячейке на 1
уменьшить значение в текущей ячейке на 1
.
напечатать значение из текущей ячейки
,ввести извне значение и сохранить в текущей ячейке
[если значение текущей ячейки 0, перейти вперёд по тексту программы на ячейку, следующую за соответствующей ] (с учётом вложенности)
]если значение текущей ячейки не 0, перейти назад по тексту программы на символ [ (с учётом вложенности)

Итак, вернемся к интерпретатору. Программный код будем считывать со стандартного ввода (если кто захочет, может переделать на считывание из файла).

Итак, будем считать, что прочитали (с помощью встроенной функции input()), затем обработаем строки, удалив все нежелательные символы.

def parse(code):
    new = ''
    for c in code:
        if c in '><+-.,[]':
            new += c
    return new

Или проще:

def parse(code):
    return ''.join(c for c in code if c in '><+-.,[]')

Далее сопоставим начало и конец каждого цикла (кода, заключенного в []).

def block(code):
    opened = []
    blocks = {}
    for i in range(len(code)):
        if code[i] == '[':
            opened.append(i)
        elif code[i] == ']':
            blocks[i] = opened[-1]
            blocks[opened.pop()] = i
    return blocks

Функция возвращает словарь {начало:конец и конец:начало} для быстрой навигации по программному коду.

Ну и, собственно, сам интерпретатор:

def run(code):
    code = parse(code)
    blocks = block(code)
    x = i = 0
    bf = {0: 0}
    while i < len(code):
        sym = code[i]
        if sym == '>':
            x += 1
            bf.
setdefault(x, 0) elif sym == '<': x -= 1 elif sym == '+': bf[x] += 1 elif sym == '-': bf[x] -= 1 elif sym == '.': print(chr(bf[x]), end='') elif sym == ',': bf[x] = int(input('Input: ')) elif sym == '[': if not bf[x]: i = blocks[i] elif sym == ']': if bf[x]: i = blocks[i] i += 1

Как это работает? Сначала обрабатывается код, составляется список циклов. Далее ячейки, которые я реализовал в качестве словаря. Далее, разбор brainfuck-программы.

Если символ ‘>’, то увеличиваем x (номер ячейки) на единицу, и, если ячейки с таким номером в словаре нет, инициализируем нулем (методом setdefault).

Если ‘<‘, то уменьшаем номер ячейки на 1. Так как вообще отрицательные ячейки не разрешены, то и ячейка всегда найдется (если хотите, можете добавить поддержку и отрицательных номеров ячеек). Если символ ‘[‘, то проверяем текущую ячейку, и, если она 0, переходим в конец цикла.

Полный код интерпретатора brainfuck:

def block(code):
    opened = []
    blocks = {}
    for i in range(len(code)):
        if code[i] == '[':
            opened.append(i)
        elif code[i] == ']':
            blocks[i] = opened[-1]
            blocks[opened.pop()] = i
    return blocks
def parse(code):
    return ''.join(c for c in code if c in '><+-.,[]')
def run(code):
    code = parse(code)
    x = i = 0
    bf = {0: 0}
    blocks = block(code)
    l = len(code)
    while i < l:
        sym = code[i]
        if sym == '>':
            x += 1
            bf.setdefault(x, 0)
        elif sym == '<':
            x -= 1
        elif sym == '+':
            bf[x] += 1
        elif sym == '-':
            bf[x] -= 1
        elif sym == '.':
            print(chr(bf[x]), end='')
        elif sym == ',':
            bf[x] = int(input('Input: '))
        elif sym == '[':
            if not bf[x]: i = blocks[i]
        elif sym == ']':
            if bf[x]: i = blocks[i]
        i += 1
code = input()
run(code)

И напоследок, hello world на brainfuck. Заодно можете проверить работу интерпретатора 🙂

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

Для вставки кода на Python в комментарий заключайте его в теги <pre><code>Ваш код</code></pre>

Python Программа для факториала числа

Факториал неотрицательного целого числа — это умножение всех целых чисел, меньших или равных n. Например, факториал 6 равен 6*5*4*3*2*1, что равно 720.

иал(н):

      

    

     возврат 1 если (n = = 1 или n = 018 ) иначе n * факториал(n - 1 )

 

номер = 5 печать 7 ( "Факториал" ,число, "есть" ,факториал (число))

 

Выход:

 Фактор 5 равен 120 0008 O(n) 

2. Итеративный подход:

Method1:

python3

1 007 Вывод:

 Факториал 5 равен 120 

Временная сложность: O(n)
Вспомогательное пространство: O(1)

Метод2:

Python3

def факториал(n):

0 1 1 017 n < 0 :

         возврат 0

     elif n = = 0 или n = = 1 :

возврат 1

     еще :

         факт = 7          0018 1

         в то время как (n > 1 ):

                              * 8 = n

             n - = 1

        возврат факт

 

число = 9

8 напечатать ( "Факториал" ,num, "есть" ,

факториал(num))

 

0 3 7 0016 по умолчанию факториал(n):

        

     рез. 16      для i в диапазоне ( 2 , n + 1 ):

         рез * = i 0 1 8 016 возврат рез

 

число = 5

печать ( 17 , число, "есть" ,

факториал(число) )

Выход

 Фактор 5 равен 120 03 

3. Однолинейное решение (с использованием троичной оператор): 

Python3

 

по умолчанию факториал(n):

  1

0 8017 9 0 8016 9 0003

     возврат 1 если (n = = 1 или n = = 0 ) еще * 017 факториал(n - 1 )

 

 

число = 5

печать 18 "Факториал" , число, "есть" ,

       факториал(число))

 

Выход:

 Факториал 2 Время Сложность 5 равна 1290 9010 :  O(n) 
Вспомогательное место: O(n)

4. Используя встроенную функцию: 

В Python математический модуль содержит ряд математических операций, которые можно легко выполнить с помощью модуля. Функция math.factorial() возвращает факториал нужного числа.

Синтаксис: math.factorial(x)

Параметр:
x: Это числовое выражение.

Возвращает:  факториал нужного числа.

Python3

импорт математика

 

def факториал(n): 1 0 0 106 90 018 возврат (мат.факториал(n))

 

 

число = 5

печать ( "Факториал" , число, "есть" 9003 8 8

       факториал(число))

 

Выход:

 Фактор 5 равен 120 

Временная сложность: O(1)

O103 Вспомогательное пространство) 6 Метод: использование numpy. prod

Python3

импорт numpy

n = 5

х66 numpy.prod([я для я в диапазон ( 1 ,n + 1 )])

печать 10) печать8

Выход 

 120 

Время Сложность : O(n)
Вспомогательный пробел: O(1)

Подробную информацию см. в полной статье о программе факториала числа!


Последнее обновление: 28 мар, 2023

Нравится статья

Сохранить статью

Программы Python в учебнике

Пример объединения строк Стек очередь
1 ЭЛЕМЕНТЫ ПРОГРАММИРОВАНИЯ ДАННЫЕ
1. 1.1 helloworld.py Привет, мир
1.1.2 useargument.py с использованием аргумента командной строки
1.2.1 правитель.py
1.2.2 intops.py целочисленные операторы
1.2.3 floatops.py поплавковые операторы
1.2.4 квадратичный.py квадратичная формула
1.2.5 високосный год.py високосный год
1.3.1 флип.py подбрасывание честной монеты
1. 3.2 tenhellos.py твой первый цикл
1.3.3 powersoftwo.py вычислительные мощности двух
1.3.4 делительпаттерн.py ваши первые вложенные циклы
1.3.5 гармоника.py номера гармоник
1.3.6 sqrt.py Метод Ньютона
1.3.7 двоичный.py преобразование в двоичный код
1.3.8 игрок.py симулятор разорения игрока
1.3.9 factor.py факторинг целых чисел
1. 4.1 пример.py выборка без замены
1.4.2 купонколлектор.py Моделирование коллектора купонов
1.4.3 Primesieve.py сито Эратосфена
1.4.4 selfavoid.py самоизбегающих случайных блужданий
1.5.1 randomseq.py генерация случайной последовательности
1.5.2 двадцать вопросов.py интерактивный пользовательский ввод
1.5.3 среднее.py усреднение потока чисел
1. 5.4 rangefilter.py простой фильтр
1.5.5 plotfilter.py стандартный ввод для фильтра рисования usa.txt  
1.5.6 прыгающий мяч.py прыгающий мяч
1.5.7 playthattune.py цифровая обработка сигналов elise.txt ascale.txt stairwaytoheaven.txt entertainer.txt firstcut.txt freebird.txt looney.txt
1.6.1 переход.py вычисление матрицы перехода маленький.txt средний.txt  
1.6.2 randomsurfer.py, имитирующий случайный серфер
1.6.3 марков.py смешивание цепи Маркова
2 ФУНКЦИИ ДАННЫЕ
2. 1.1 гармоникаf.py номера гармоник (повторно)
2.1.2 гаусс.py Функции Гаусса
2.1.3 купон.py коллектор купонов (пересмотренный)
2.1.4 playthattunedeluxe.py сыграй эту мелодию (повторно) elise.txt ascale.txt stairwaytoheaven.txt entertainer.txt firstcut.txt freebird.txt looney.txt
2.2.1 Гауссиан.py Модуль функций Гаусса
2.2.2 gaussiantable.py пример гауссового клиента
2.2.3 sierpinski.py Треугольник Серпинского
2. 2.4 ifs.py повторяющиеся функциональные системы
2.2.5 bernoulli.py Испытания Бернулли
2.3.1 евклид.py Алгоритм Евклида
2.3.2 Towersofhanoi.py башни Ханоя
2.3.3 beckett.py Серый код
2.3.4 htree.py рекурсивная графика
2.3.5 брауниан.py Броуновский мост
2.4.1 перколяцияv.py обнаружение вертикальной перколяции test5. txt test8.txt  
2.4.2 percolationio.py Функции поддержки перколяции
2.4.3 visualizev.py клиент визуализации вертикальной перколяции
2.4.4 оценкаv.py оценка вероятности вертикальной перколяции
2.4.5 percolation.py обнаружение просачивания test5.txt test8.txt  
2.4.6 визуализировать.py клиент визуализации перколяции
2.4.7 оценка.py оценка вероятности просачивания
3 ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ДАННЫЕ
3. 1.1 потенциалгене.py потенциальная идентификация генов
3.1.2 chargeclient.py клиент заряженных частиц
3.1.3 alberssquares.py квадраты Альберса
3.1.4 яркость.py библиотека яркости
3.1.5 оттенки серого.py преобразование цвета в оттенки серого mandrill.jpg mandrill.png darwin.jpg darwin.png
3.1.6 масштаб.py масштабирование изображения mandrill.jpg mandrill.png darwin.jpg darwin.png
3.1.7 исчезать.py эффект затухания mandrill. jpg mandrill.png darwin.jpg darwin.png
3.1.8 потенциал.py визуализация электрического потенциала charge.txt  
3.1.9 кат.py объединение файлов in1.txt in2.txt  
3.1.10 stockquote.py очистка экрана для котировок акций
3.1.11 split.py разделение файла djia.csv  
3.2.1 charge.py тип данных заряженных частиц
3.2.2 секундомер.py тип данных секундомера
3.2.3 гистограмма.py тип данных гистограммы
3. 2.4 черепаха.py тип графических данных черепахи
3.2.5 коч.py Кривая Коха
3.2.6 спираль.py spira mirabilis
3.2.7 пьяный.py пьяная черепаха
3.2.8 пьяницы.py пьяных черепах
3.2.9 комплекс.py тип данных комплексного числа
3.2.10 mandelbrot.py Набор Мандельброта
3.2.11 stockaccount.py тип данных счета запасов turing. txt  
3.3.1 комплексpolar.py комплексные числа (повторно)
3.3.2 counter.py тип данных счетчика
3.3.3 вектор.py пространственный векторный тип данных
3.3.4 sketch.py ​​ тип данных эскиза genome20.txt  
3.3.5 comparedocuments.py обнаружение подобияdocuments.txt конституция.txt tomsawyer.txt huckfinn.txt prejudice.txt djia.csv amazon.html actg.txt
3.4.1 body.py тип данных гравитационного тела
3. 4.2 вселенная.py Симуляция тела 2body.txt 3body.txt 4body.txt 2bodytiny.txt
4 СТРУКТУРЫ ДАННЫХ ДАННЫЕ
4.1.1 threesum.py Задача с тремя суммами 8ints.txt 1kints.txt 2kints.txt 4kints.txt 8kints.txt 16kints.txt 32kints.txt 64kints.txt 128kints.txt
4.1.2 удвоение test.py проверка гипотезы удвоения
4.1.3 timeops.py временных операторов и функций
4.1.4 bigarray.py определение объема памяти
4.2.1 вопросов.py бинарный поиск (20 вопросов)
4. 2.2 bisection.py бинарный поиск (инвертирование функции)
4.2.3 двоичный поиск.py бинарный поиск (сортированный массив) emails.txt  white.txt  
4.2.4 вставка.py сортировка вставками крошечный.txt tomsawyer.txt  
4.2.5 разсортировка.py тест на удвоение функций сортировки
4.2.6 слияние.py сортировка слиянием крошечный.txt tomsawyer.txt  
4.2.7 частотакаунта.py частота подсчета leipzig100k.txt  leipzig200k.txt  leipzig1m.txt  
4.3.1 arraystack. py стек (реализация массива изменения размера) tobe.txt  
4.3.2 связанный стек.py (реализация связанного списка) tobe.txt  
4.3.3 оценка.py оценка выражения выражение1.txt выражение2.txt  
4.3.4 связанная очередь.py (реализация связанного списка) tobe.txt  
4.3.5 mm1queue.py Моделирование очереди M/M/1
4.3.6 loadbalance.py моделирование балансировки нагрузки
4.4.1 lookup.py поиск по словарю amino.csv djia. csv elements.csv ip.csv ip-by-country.csv morse.csv phone-na.csv
4.4.2 index.py индексация mobydick.txt tale.txt  
4.4.3 hashst.py тип данных таблицы хэш-символов
4.4.4 бст.py Тип данных таблицы символов BST
4.5.1 граф.py тип данных графика тиниграф.txt  
4.5.2 инвертировать.py с использованием графика для инвертирования индекса tinygraph.txt  movies.txt  
4.5.3 разделение.py клиент кратчайших путей route.txt  movies.txt  
4.
Оставить комментарий

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

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

© 2019 Штирлиц Сеть печатных салонов в Перми

Цифровая печать, цветное и черно-белое копирование документов, сканирование документов, ризография в Перми.