Python 3 — это современный язык, на котором просто и приятно писать программы.
Для печати значений в Питоне есть функция print(). Внутри круглых скобок через запятую мы пишем то, что хотим вывести. Вот программа, которая делает несколько вычислений:
print(5 + 10) print(3 * 7, (17 — 2) * 8) print(2 ** 16) # две звёздочки означают возведение в степень print(37 / 3) # один слэш — это деление с ответом-дробью print(37 // 3) # два слэша считают частное от деления нацело # это как операция div в других языках print(37 % 3) # процент считает остаток от деления нацело # это как операция mod в других языках
Для ввода данных в программу мы используем функцию input() . Она считывает одну строку.
Вот программа, которая считывает имя пользователя и приветствует его:
Пётр
print(‘Как вас зовут?’) name = input() # считываем строку и кладём её в переменную name print(‘Здравствуйте, ‘ + name + ‘!’)
Мы будем писать программы, которые считывают данные, перерабатывают их и выводят какой-то результат. При запуске на компьютере такие программы считывают данные, которые пользователь вводит с клавиатуры, а результат выводят на экран.
КАК СОЗДАТЬ СВОЙ ЧИТ НА МАЙНКРАФТ 1.12.2 | ЧАСТЬ 1
Попробуем написать программу, которая считывает два числа и выводит их сумму. Для этого считаем два числа и сохраним их в переменные a и b , пользуясь оператором присваивания = . Слева от оператора присваивания в программах на Питоне ставится имя переменной — например, строка из латинских букв. Справа от оператора присваивания ставится любое выражение. Имя станет указывать на результат вычисления выражения. Проиграйте эту программу и посмотрите на результаты её работы:
a = input() b = input() s = a + b print(s)
Мы видим, что программа выводит 57 , хотя в реальной жизни 5 + 7 будет 12 . Это произошло потому, что Питон в третьей строчке «сложил» две строки, а не два числа. В Питоне две строки складываются так: к первой строке приписывается вторая.
Обратите внимание, что в визуализаторе содержимое переменных a и b заключено в кавычки. Это означает, что в a и b лежат строки, а не числа.
В Питоне все данные называются объектами. Число 2 представляется объектом «число 2», строка ‘hello’ – это объект «строка ‘hello’ ».
Каждый объект относится к какому-то типу. Строки хранятся в объектах типа str , целые числа хранятся в объектах типа int , дробные числа (вещественные числа) — в объектах типа float . Тип объекта определяет, какие действия можно делать с объектами этого типа. Например, если в переменных first и second лежат объекты типа int , то их можно перемножить, а если в них лежат объекты типа str , то их перемножить нельзя:
first = 5 second = 7 print(first * second) first = ‘5’ second = ‘7’ print(first * second)
Чтобы преобразовать строку из цифр в целое число, воспользуемся функцией int() . Например, int(’23’) вернет число 23 .
Вот пример правильной программы, которая считывает два числа и выводит их сумму:
a = int(input()) b = int(input()) s = a + b print(s)
Источник: pythontutor.ru
КАК СДЕЛАТЬ ПАСТУ С 0 | КАК СДЕЛАТЬ СВОЙ ЧИТ НА МАЙНКРАФТ 1 12 2 #1
Автоматически читать текст чата из Minecraft
В Minecraft я надеялся найти способ автоматически читать чат, как показано ниже. Чтобы записывать транзакции, сделанные в виртуальном магазине, в базу данных PostgreSQL. Предпочтительно использовать Python. Я не владею сервером Minecraft.
Мой план состоит в том, чтобы найти способ прямого чтения пакетов, отправленных с сервера Minecraft (предпочтительнее для надежности, но с неизвестной трудностью), или как план резервного копирования, возможно, выяснить, как экранировать текст. Я нашел некоторые ресурсы, которые позволили бы мне изменить шрифт на моноширинный, что обеспечит более надежный способ чтения в шрифте, и я считаю, что создать идеально согласованные места на экране для каждого персонажа.
Я мог столкнуться с тем, что близко к черному, но не совсем, но предпочел бы этого не делать. Как показано на рисунке выше, вы видите, что есть много разных цветов шрифта, чтобы конкурировать с тоже. Даже после уменьшения его, как описано выше, я все еще не уверен, как превратить его в текст с помощью python. Любые советы по моему подходу?
Любые намеки на то, как я могу читать пакеты, поступающие с сервера? Любые советы по очистке текста от моего экрана?
user1867827 01 дек. 2012, в 01:46
Поделиться
Вы, вероятно, захотите перехватить трафик, который получает сервер. Python — не слишком выполнимый инструмент для этой работы (если только вы не используете сервер Vanilla с оболочкой Python) — для получения дополнительной помощи посмотрите wiki.vg/Main_Page и #mcdevs на irc.freenode.net.
Natan 01 дек. 2012, в 00:30
abarnert 01 дек. 2012, в 00:34
может это поможет? github.com/mmcgill/mc3p
Joran Beasley 01 дек. 2012, в 00:35
jfs 01 дек.
2012, в 00:44
Я считаю, что MC написан на Java, я полностью понимаю, что вы просили решение для Python, но вы можете добавить тег Java к этому сообщению и попросить некоторых программистов на Java взвесить это — возможно, есть небольшая правка, которую вы можете сделайте на своем конце, чтобы захватить детали чата (и затем отправить его на Python).
Justin Carroll 01 дек. 2012, в 00:44
вот пример DBHandler для модуля регистрации, который отправляет сообщения журнала в базу данных, если вы хотите войти непосредственно в базу данных; хотя это может быть более гибким, чтобы сначала войти в файлы и загрузить / синхронизировать с БД
jfs 01 дек. 2012, в 00:57
abarnert 01 дек. 2012, в 00:59
Соскребание экрана, вероятно, неосуществимо, однако .
Joran Beasley 01 дек. 2012, в 19:54
Показать ещё 6 комментариев
Поделиться:
screen-scraping
2 ответа
Лучший ответ
Во-первых, как предложил куйан, см. http://wiki.vg/Main_Page, в котором есть ссылки на различные программы, которые могут быть полезны, либо напрямую, либо для источника посмотрите.
Например, в разделе «Утилиты» первое, что появляется, это прокси-сервер.
И немного вниз, там mc3p , программа, предложенная Джораном Бисли — прокси Python, с поддержкой плагина. Он работает только до 1.2.5, но sadimusi/mc3p утверждает, что он является 1.4.2-совместимой вилкой. Как говорит Дж. Ф. Себастьян, mc3p имеет интерфейс для плагинов журналов, поэтому вы можете просто написать тот, который регистрируется в postgres.
Если вы хотите самим прочитать пакеты, это не сложно. Вы можете написать общий прокси-сервер TCP в нескольких десятках строк Python или написать один в 2 строках shellscript вокруг netcat, который отображает данные на ваш Python script.
Жесткая часть не перехватывает данные; он анализирует протокол. Minecraft, вероятно, не отправляет «Nightbane: 1 tnt за 100 000 долларов каждый», но что-то вроде «предлагают: Nightbane: 1: tnt: 100″ или » x13x09Nightbanex00x01x72x00x64″. Из того, что говорит вики, протокол документирован, но плохо, а иногда и неточно, а вики иногда тоже неправильны, а официальный код очень уродливый и трудно читаемый. Это означает, что лучший способ понять протокол — это, вероятно, чтение sadimusi/mc3p или одного из других проектов, таких как McPacketSniffer или ProtoProxy, после чего вам нужно спросить, будет ли проще просто использовать этот проект, а не переопределять его.
Во всяком случае, очистка экрана должна быть вашим последним средством.
abarnert 01 дек. 2012, в 00:54
Поделиться
Theres на самом деле еще лучший способ прочитать чат от Minecraft, и он не требует ни скрипинга экрана, ни декодирования пакетов.
Minecraft автоматически записывает сообщения чата (и многое другое) в файлы журнала, как в одиночном, так и в многопользовательском режиме. В Windows они расположены в %appdata%/.minecraft/logs . Предыдущие журналы сжимаются с помощью gzip, но журнал последних сеансов записывается в текстовый файл last.log в реальном времени. Сообщения чата содержат текст [Client thread/INFO]: [CHAT] . Вы можете открыть его так же, как с обычным файлом, используя:
import os with open(os.getenv(«APPDATA»)+»/.minecraft/logs/latest.log», «r») as logfile: for line in logfile: if «[Client thread/INFO]: [CHAT]» in line: print line,
Или, если вы хотите читать чат в режиме реального времени, вы можете использовать приведенный ниже код, слегка измененный из кода этого :
import time, os def follow(thefile): thefile.seek(0,2) while True: line = thefile.readline() if not line: time.sleep(0.1) continue yield line if __name__ == «__main__»: logfile = open(os.getenv(«APPDATA»)+»/.minecraft/logs/latest.log», «r») loglines = follow(logfile) for line in loglines: if «[Client thread/INFO]: [CHAT]» in line: print line,
Источник: overcoder.net
Python с абсолютного нуля. Учимся кодить без скучных книжек
Если ты думаешь, что хакеру программирование не нужно, то глубоко ошибаешься! Да, можно качнуть Kali Linux и юзать готовые программки, копипастить код с форумов и вслепую качать скрипты с GitHub. Но потолок твоих умений, пока ты не научишься писать и понимать код, будет низким. В этой статье я попытаюсь в доступной форме научить тебя основам программирования. Начинаем с абсолютного нуля!
От редакции
Недавно мы проводили опрос о том, какой курс по Python был бы интереснее читателям. Две первые строчки с большим отрывом в нем заняли варианты «для хакера» и «Python с нуля». Узнав о таком положении дел, мы немедленно заказали статью о том, как начать программировать на Python. Если она будет иметь успех, то может превратиться в целую серию.
Отличие нашего подхода — в том, что мы объясняем все живым языком и даем нескучные примеры. В общем, обучение в фирменном стиле «Хакера»!
И, поскольку это эксперимент, статья доступна без платной подписки.
Если у тебя на компе есть современный дистрибутив Linux, то в него уже входит Python 3, а писать первые программы будет удобно в IDLE — простом редакторе кода, который прилагается к Python. В Ubuntu, чтобы установить его, набери в консоли
sudo apt- get install idle3
В Windows при установке Python обязательно отметь на первом экране установщика галочку Add to Path, чтобы можно было запускать python3 из командной строки в любом удобном месте.
Запустив IDLE, зайди в Options → Configure IDLE, перейди на вкладку General и поставь галочку на пункте Open Edit Window, нажми ОK и перезапусти IDLE. Теперь можно писать программы, сохранять их и запускать клавишей F5. Ну что, погнали?
Переменные
В любом языке программирования есть такая штука, как переменные. Это как в школьной алгебре: вот переменная a = 1 , вот переменная b = 2 . То есть это такие абстрактные штуки, внутри них лежит значение, которое может меняться — например, когда ты пишешь после переменной знак равно и какое‑то новое значение.
Ну, то, что print( a) — это команда, которая печатает на экране текущее значение переменной, ты уже понял. Ты написал после знака равно снова саму переменную + 2 , то есть сначала в переменной было значение 2, потом к этому значению прибавили еще 2. На экране гордо красуется 4. Поздравляю, два и два сложили!
А если изначально неизвестно, какие числа надо складывать? Тогда пришлось бы сперва попросить юзера ввести их в консоли и нажать Enter. Давай так и сделаем:
a = input ( ‘Введи, сколько у тебя литров пива: ‘ )
b = input ( ‘Сколько пива принес друг: ‘ )
c = int ( a ) + int ( b )
print ( ‘На двоих у вас: ‘ + str ( c ) + ‘ литров пива’ )
Внутри скобочек у input ты пишешь пояснение для юзера, что конкретно его просят ввести. Но вот беда, по умолчанию все, что вводится через input, считается не числом, а строкой, поэтому, прежде чем складывать количество литров пива, нужно сначала преобразовать введенные строки в числа с помощью функции int().
info
Слово «функция» должно быть знакомо тебе из математики. В скобках мы пишем то, что она принимает (аргумент), а на выходе будет результат. Python сначала подменит переменную на ее текущее значение ( int( a) на, скажем, int( «5») , а потом функцию — на результат ее выполнения, то есть 5. Бывает, что функция ничего не возвращает, только что‑то делает. Например, print( ) только печатает аргумент.
Окей, преобразовал строки в числа, положил их в переменную c , а дальше‑то что за треш внутри скобок у print ? Тут складываются строки (строки всегда пишутся внутри кавычек), поясняющие, что именно выводится на экран, а результат сложения передается в функцию print( ) .
Чтобы строки безболезненно сложились с переменной c , в которой лежит число, надо преобразовать его в строку функцией str( ) — так же как мы превращали строки в числа, только наоборот.
Вообще, типов переменных много, но суть ты уловил — чтобы производить с переменными какие‑то действия, нужно их сначала привести к одному типу — к строковому, или к числовому, или еще к какому‑нибудь. Если с этим не заморачиваться, Python сложит не числа, а строки и введенные 2 и 3 литра пива в сумме дадут не 5, а целых 23. Хорошо бы так было в реальности!
Вот еще примерчик, рассчитывающий, сколько тебе еще пить пиво, исходя из средней продолжительности жизни в России:
a = input ( ‘Введи, сколько тебе лет: ‘ )
b = 73 — int ( a )
print ( ‘Осталось примерно: ‘ + str ( b ) + » лет» )
Здесь мы вызываем функцию input( ) , чтобы получить значение, вычитаем его из 73 (средняя продолжительность жизни россиянина), не забыв превратить строку в число, а потом печатаем результат, превратив число обратно в строку и сложив с другими строками.
Итак, ты узнал, что такое целочисленные и строковые переменные, что эти типы можно преобразовывать друг в друга командами int( ) и str( ) . К тому же теперь ты умеешь получать переменные от пользователя с помощью функции input( ‘Введите что-то’) и печатать результаты с помощью функции print( ) .
Условия
В основе любой программы лежат условия. В зависимости от того, выполняются они или не выполняются, программа может пойти по одному или другому пути. Представь, ты едешь на машине и смотришь на часы: если уже есть десять вечера, то поворачиваешь домой, если нет, то можно заехать в гости. Точно так же работает и программа: проверяет какое‑то значение и сворачивает туда или сюда и выполняет соответствующий кусочек кода.
beer = input ( ‘Введите Yes, если пиво есть, и No, если пива нет: ‘ )
if beer . lower ( ) == ‘yes’ :
result = ‘Ты взломаешь Пентагон’
result = ‘Ты сломаешь свой мозг’
print ( result )
На английском if значит «если», а else — «иначе» или «в противном случае». В строчке после if идет условие, которое мы проверяем. Если оно верно, выполняется первый блок кода (он отделен четырьмя пробелами вначале). Если неверно, то тот, что после else: .
info
Блоки кода в Python отделаются отступами. Отступ на самом деле может быть любым, например некоторые предпочитают использовать вместо четырех пробелов клавишу Tab. Главное — не смешивать в одной программе отступы разного типа. Если уж начал использовать четыре пробела, то используй по всей программе, а то Python будет на тебя ругаться и унижать.
Еще один важный момент здесь — это знак равенства в условии. Он пишется как двойное «равно» ( == ) и этим отличается от присвоения — одинарного «равно».
Функция lower(), прежде чем сравнивать условие, делает все буквы в строке маленькими, потому что глупый юзер может ввести слово YES с горящим Caps Lock, и это надо предусмотреть заранее.
info
На самом деле lower( ) — не просто функция, а метод класса string (строка). Именно поэтому он вызывается через точку после переменной, которая содержит строку. О классах и методах мы поговорим как‑нибудь в другой раз, а пока просто запомни, что некоторые функции вызываются таким образом.
Давай попробуем сделать условие для проверки логина и пароля, используя оператор И, который пишется как and . Он нужен для того, чтобы проверить одновременно выполнение первого и второго условия.
Источник: xakep.ru