Python примеры простых скриптов

Пишем простой скрипт на Python

Здарова, щеглы, сегодня мы своими руками будем писать скрипт на Python. Нам понадобятся: интерпретатор Python 3 под «какая-там-у-вас-ОС», текстовый редактор с подсветкой синтаксиса, например, Sublime Text, Google, упаковка прамирацетама, бутылка минеральной воды и 60 минут свободного времени.
Перед тем как писать скрипт, мы должны определиться, что он вообще будет делать. Делать он будет следующее: получив на вход домен и диапазон IP-адресов, многопоточно проходить список этих адресов, совершать HTTP-запрос к каждому, в попытках понять, на каком же из них размещен искомый домен. Зачем это нужно? Бывают ситуации, когда IP-адрес домена закрыт Cloudflare, или Stormwall, или Incapsula, или еще чем-нибудь, WHOIS история не выдает ничего интересного, в DNS-записях такая же канитель, а, внезапно, один из поддоменов ресолвится в адрес из некоторой подсети, которая не принадлежит сервису защиты. И в этот момент нам становится интересно, вдруг и основной домен размещен в той же самой подсети.

Читайте также:  display image

Погнали, сразу выпиваем половину бутылки воды, и пишем следующий код:

Ни одного комментария, какие-то import, непонятные аргументы командной строки и еще эти две последние строчки. Но будьте спокойны, все нормально, это я вам как мастер программирования на Python с 30-минутным стажем говорю. Тем более, как известно, Google не врет, а официальная документация по Python — это вообще неоспоримая истина.
Так что же мы все-таки сделали в вышеописанном фрагменте кода? Мы подключили модули для работы с аргументами коммандной строки, модули для логирования (потокобезопасные между прочим!), модуль для работы с SSL (для одной мелочи, связанной с HTTPS-запросами), модуль для создания пула потоков, и, наконец, модули для совершения HTTP-запросов, работы с IP-адресами и двухсторонней очередью (по поводу различных типов импорта можно почитать здесь).
После этого мы, в соответствии с документацией по модулю argparse, создали вспомогательную функцию, которая будет обрабатывать аргументы, переданные скрипту при запуске из командной строки. Как видите, в скрипте будет предусмотрена работа со списком доменов/IP-диапазонов, а также возможность фильтрации результатов по ключевым словам и по кодам состояния HTTP и еще пара мелочей, как, например, смена User-Agent и опциональная проверка HTTPS-версии искомого ресурса. Последние две строки в основном используются для разделения кода, который будет выполнен при запуске самого скрипта и при импортировании в другой скрипт. В общем тут все сложно, все так пишут. Мы тоже так будем писать. Можно было бы немного модифицировать этот код, например, добавив возврат разных статусов системе в зависимости от того, как отработала функция main, добавить argv в качестве аргумента, и так далее, но мы изучаем Python только 10 минут и ленимся вчитываться в документацию.

Читайте также:  Html check if null

Делаем перерыв и выпиваем глоток освежающей минеральной воды.

Источник

25 полезных однострочников Python, которые вы должны знать

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

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

1. Сменка двух переменных

# a = 4 b = 5 a,b = b,a # print(a,b) >> 5,4

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

2. Множественные присвоения переменных

a,b,c = 4,5.5,'Hello' #print(a,b,c) >> 4,5.5,hello

Вы можете использовать запятые и переменные, чтобы назначать нескольким переменным значения за раз. Используя этот метод, вы даже можете назначить несколько типов данных var за раз. Вы можете использовать список для присвоения значений переменным. Ниже приведен пример присвоения нескольких значений разным переменным из списка.

a,b,*c = [1,2,3,4,5] print(a,b,c) > 1 2 [3,4,5]

3. Сумма четных чисел в списке

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

a = [1,2,3,4,5,6] s = sum([num for num in a if num%2 == 0]) print(s) >> 12

4. Удаление нескольких элементов из списка

del — ключевое слово, используемое в Python для удаления объектов из списка.

#### Удаляем все четные числа a = [1,2,3,4,5] del a[1::2] print(a) >[1, 3, 5]

5. Чтение файлов

lst = [line.strip() for line in open('data.txt')] print(lst)

Здесь мы используем понимание того, как устроен список. Сначала мы открываем текстовый файл и с помощью цикла for читаем строку за строкой. В итоге с помощью strip убираем все лишнее пространство. Но есть один более простой и короткий способ сделать то же самое, используя только функцию списка.

list(open('data.txt')) ##Использование with также закроет файл после использования with open("data.txt") as f: lst=[line.strip() for line in f] print(lst)

6. Запись данных в файл

with open("data.txt",'a',newline='\n') as f: f.write("Python is awesome")

Приведенный выше код сначала создаст файл data.txt, если его еще нет, а затем напишет в этом файле Python is awesome .

7. Создание списков

lst = [i for i in range(0,10)] print(lst) > [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] или lst = list(range(0,10)) print(lst)

Мы также можем создать список строк, используя тот же метод.

lst = [("Hello "+i) for i in ['Karl','Abhay','Zen']] print(lst) > ['Hello Karl', 'Hello Abhay', 'Hello Zen']

8. Mapping списков, или изменение типа данных в списке

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

list(map(int,['1','2','3'])) > [1, 2, 3] list(map(float,[1,2,3])) > [1.0, 2.0, 3.0] # А вот как делалось раньше [float(i) for i in [1,2,3]] > [1.0, 2.0, 3.0]

9. Создание набора

Метод, который мы использовали для создания списков, также можно использовать для создания наборов. Давайте создадим набор с помощью метода, который возвращает квадратный корень всех четных чисел в диапазоне.

# Квадрат всех четных чисел в диапазоне >

10. Fizz Buzz

Это тест, в котором нам нужно написать программу, что печатает числа от 1 до 100. Но для чисел, кратных трем, выведет «Fizz» вместо числа, а для кратных пяти выведет «Buzz». (если кратно и трем, и пяти, то выводится, соответственно, FizzBuzz).

Похоже, нам нужно использовать циклы и несколько операторов if-else. Если вы попытаетесь сделать это на любом другом языке, то вам, возможно, придется написать до 10 строк кода. Но используя python, мы сможем реализовать FizzBuzz всего одной строкой кода.

['FizzBuzz' if i%3==0 and i%5==0 else 'Fizz' if i%3==0 else 'Buzz' if i%5==0 else i for i in range(1,20)]

В приведенном выше коде мы используем понимание списка для запуска цикла от 1 до 20, а затем на каждой итерации цикла мы проверяем, делится ли число на 3 или 5. Если да, то мы заменяем число на Fizz или Buzz соответственно (при выполнении обоих условий заменим число на FizzBuzz).

11. Палиндром

Палиндром — это число или строка, которые в обратном виде выглядят одинаково.

text = 'level' ispalindrome = text == text[::-1] ispalindrome > True

12. Целые числа, разделенные пробелами, в списке

lis = list(map(int, input().split())) print(lis) > 1 2 3 4 5 6 7 8 [1, 2, 3, 4, 5, 6, 7, 8]

13. Лямбда-функция

Лямбда-функция — это небольшая анонимная функция.

Лямбда-функция может принимать любое количество аргументов, но может иметь только одно __выражение.

sqr = lambda x: x * x ##Функция, возвращающая квадрат любого числа sqr(10) > 100

14. Проверить наличие числа в списке

num = 5 if num in [1,2,3,4,5]: print('present') > present

15. Вывод паттернов

Паттерны — это то, что меня всегда увлекало. В python мы можем рисовать удивительные паттерны, используя всего одну строку кода.

n = 5 print('\n'.join('?' * i for i in range(1, n + 1))) > ? ?? . . . 

16. Нахождение факториала

Факториал — это произведение целого числа и всех целых чисел в порядке перед ним.

import math n = 6 math.factorial(n) > 720

17. Ряд Фибоначчи

Ряд Фибоначчи — это серия чисел, в которой каждое число (число Фибоначчи) является суммой двух предыдущих чисел. Простейший ряд Фибоначчи: 1, 1, 2, 3, 5, 8, 13 и т.д. Мы можем использовать создание списка и цикл for для создания ряда Фибоначчи в необходимом нам диапазоне.

fibo = [0,1] [fibo.append(fibo[-2]+fibo[-1]) for i in range(5)] fibo > [0, 1, 1, 2, 3, 5, 8]

18. Простое число

Простое число — это число, которое делится только само на себя и 1. например: 2,3,5,7 и т. Д. Чтобы сгенерировать простые числа в диапазоне, мы можем использовать функцию списка с фильтром и лямбда для генерации простых чисел.

list(filter(lambda x:all(x % y != 0 for y in range(2, x)), range(2, 13))) > [2, 3, 5, 7, 11]

19. Нахождение максимального числа

findmax = lambda x,y: x if x > y else y findmax(5,14) > 14 или max(5,14)

В приведенном выше коде с использованием лямбда-функции мы проверяем условие сравнения и в соответствии с ним возвращаем максимальное число.

20. Линейная алгебра

Иногда нам нужно увеличить числа в списке в 2 или 5 раз. Код ниже покажет, как это сделать.

def scale(lst, x): return [i*x for i in lst] scale([2,3,4], 2) ## вызов функции > [4,6,8]

21. Транспонировать матрицу

Если вам нужно преобразовать все строки в столбцы и наоборот, в python вы можете транспонировать матрицу всего в одну строку кода, используя функцию zip.

a=[[1,2,3], [4,5,6], [7,8,9]] transpose = [list(i) for i in zip(*a)] transpose > [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

22. Подсчет нахождений паттерна

Это важный и рабочий метод, когда нам нужно знать количество повторений паттерна в тексте. В python есть библиотека re, которая сделает эту работу за нас.

import re; len(re.findall('python','python is a programming language. python is python.')) > 3

23. Замена текста другим текстом

"python is a programming language. python is python".replace("python",'Java') > Java is a programming language. Java is Java

24. Симуляция подбрасывания монеты

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

import random; random.choice(['Head',"Tail"]) > Head

25. Генерация групп

groups = [(a, b) for a in ['a', 'b'] for b in [1, 2, 3]] groups > [('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3)]

Я поделился всеми полезными и важными однострочниками, которые я знаю. Если вы знаете какие-то ещё, поделитесь в комментариях.

Источник

Оцените статью