Найти - Пользователи
Полная версия: Как улучшить если можно программу и сделать ее "executable"
Начало » Python для новичков » Как улучшить если можно программу и сделать ее "executable"
1
neirol
import random
import win32clipboard
import sys

params = sys.argv
pass_len = 8

digits = (0,1,2,3,4,5,6,7,8,9)
lower_letters = ('a','b','c','d','e','f','g','h','i','j','k')
upper_letters = ('A','B','C','D','E','F','G','H','I','J','K')

try:
try:
if int(params[1]) > 0:
pass_len = int(params[1])
except IndexError:
pass_len = 8
except ValueError:
if params[1] == 'help':
sys.exit('Синтаксис вызова программы: pasgen.py [длина пароля] [тип используемых символов]\nТипы используемых символов:\r\n1 - цифры\r\n2 - латинские буквы в нижнем регистре\r\n3 - цифры и латинские буквы в нижнем регистре\r\nпо умолчанию - цифры и буквы в обоих регистрах')

try:
if params[2] == '1':
symbs = digits
elif params[2] == '2':
symbs = lower_letters
elif params[2] == '3':
symbs = digits + lower_letters
else:
symbs = digits + lower_letters + upper_letters
except IndexError:
symbs = digits + lower_letters + upper_letters

password = ''
i = 0

while i < pass_len:
password = password + str(symbs[round(random.random() * (len(symbs) - 1))])
i = i + 1

win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(password)
print(password)
Написал первую программу. Вопрос как улучшить ее, если можно, в какую сторону копать дальше?
И писал я ее на версии 3.2, а хотелось бы получить ее .exe версию, как можно это сделать?
agalen
Случайная строка из заданного набора символов:
def gen( symbols, length ):
return "".join( random.choice(symbols) for i in range( length ) )
Сделать exe можно с помощью py2exe или cx_freeze
neirol
Внес такую правку, без str() отказался компилировать.

password = ''.join(str(random.choice(symbs)) for i in range(pass_len))
Все работает, спасибо!
pyuser
Вместо
password = ''
i = 0

while i < pass_len:
password = password + str(symbs[round(random.random() * (len(symbs) - 1))])
i = i + 1
лучше использовать
password = random.sample(symbs, pass_len)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB