Yana Posted July 21, 2012 at 04:22 PM Report #469533 Posted July 21, 2012 at 04:22 PM (edited) Boas, fiz mais um pequeno script em python, nomeadamente um gerador de senhas aleatórias, deixo aqui o código e gostava de opiniões sobre como melhora-lo. import random char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" num_caract = int(input("Número de caracteres: ")) def password(): if (num_caract < 0): return "Erro: número negativo" elif (num_caract == 0): return "Erro: Tem que ter pelo menos 1 caracter." else: passwd = "" while len(passwd) != num_caract: passwd = passwd + random.choice(char) if len(passwd) == num_caract: return "Password: %s" % passwd print password() Edited July 21, 2012 at 04:58 PM by djthyrax GeSHi
pmg Posted July 21, 2012 at 04:56 PM Report #469540 Posted July 21, 2012 at 04:56 PM O ultimo if é redundante: podes fazer o return logo a seguir ao while. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Yana Posted July 21, 2012 at 05:05 PM Author Report #469542 Posted July 21, 2012 at 05:05 PM O ultimo if é redundante: podes fazer o return logo a seguir ao while. Ok obrigado 🙂
thoga31 Posted July 21, 2012 at 08:50 PM Report #469579 Posted July 21, 2012 at 08:50 PM Outra ideia: passa por parâmetro o número de caracteres: def password(num_caract) Assim, sempre que precisares de chamar este método, fazes: password(int(input("Número de caracteres? "))) Quando um método depende de um valor deste género, deverá ser uma variável local (passada por parâmetro) e não uma global. Assim é utilizável em qualquer script. 😉 Knowledge is free!
Yana Posted July 21, 2012 at 10:09 PM Author Report #469596 Posted July 21, 2012 at 10:09 PM (edited) Outra ideia: passa por parâmetro o número de caracteres: def password(num_caract) Assim, sempre que precisares de chamar este método, fazes: password(int(input("Número de caracteres? "))) Quando um método depende de um valor deste género, deverá ser uma variável local (passada por parâmetro) e não uma global. Assim é utilizável em qualquer script. 😉 Ok muito obrigado 👍 Edited July 21, 2012 at 10:10 PM by Yana
djthyrax Posted July 22, 2012 at 07:51 PM Report #469670 Posted July 22, 2012 at 07:51 PM Usem raw_input e não input, podem ver na documentação o porquê. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
thoga31 Posted July 23, 2012 at 09:35 PM Report #469826 Posted July 23, 2012 at 09:35 PM Usem raw_input e não input, podem ver na documentação o porquê. No Python 3 não consigo utilizar o raw_input porque, segundo o erro, não está declarado. Deve estar numa lib qualquer que eu não sei qual é. O mesmo acontece com o reduce que no Python 3 tem de ser importado da lib functools. Consegues-me indicar a que lib posso ir buscar o raw_input, ou os métodos de input da versão 3 mudaram? Knowledge is free!
Yana Posted July 23, 2012 at 09:47 PM Author Report #469831 Posted July 23, 2012 at 09:47 PM (edited) No Python 3 não consigo utilizar o raw_input porque, segundo o erro, não está declarado. Deve estar numa lib qualquer que eu não sei qual é. O mesmo acontece com o reduce que no Python 3 tem de ser importado da lib functools. Consegues-me indicar a que lib posso ir buscar o raw_input, ou os métodos de input da versão 3 mudaram? Yah, mudou fica input(). Edited July 23, 2012 at 10:14 PM by Yana
djthyrax Posted July 23, 2012 at 09:56 PM Report #469834 Posted July 23, 2012 at 09:56 PM Estava a pensar no Python 2.x, peço desculpa. O raw_input() mudou de nome para input() no Python 3.0. http://www.ibm.com/developerworks/linux/library/l-python3-1/ Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
thoga31 Posted July 23, 2012 at 09:59 PM Report #469837 Posted July 23, 2012 at 09:59 PM Pois, é que eu utilizo o Python 3, e o raw_input andava desaparecido xD Obrigado, @djthyrax. 😉 Knowledge is free!
Dr_Lion Posted July 24, 2012 at 01:35 PM Report #469989 Posted July 24, 2012 at 01:35 PM Uma sugestão completares o dicionário, com caracteres especiais.. nem que sejam alguns já dá outra segurança á password, a não ser que seja um programa puramente académico. 1 Report
thoga31 Posted July 24, 2012 at 02:23 PM Report #470016 Posted July 24, 2012 at 02:23 PM Apesar de ser de âmbito académico, ficaria muito bem uns caracteres especiais, tens razão, @Dr_Lion 😉 Knowledge is free!
Yana Posted July 25, 2012 at 01:27 PM Author Report #470245 Posted July 25, 2012 at 01:27 PM Uma sugestão completares o dicionário, com caracteres especiais.. nem que sejam alguns já dá outra segurança á password, a não ser que seja um programa puramente académico. Roger that
Gil Sousa Posted August 25, 2012 at 02:06 AM Report #473465 Posted August 25, 2012 at 02:06 AM while len(passwd) != num_caract: passwd = passwd + random.choice(char) Podes altear o código dentro do while para while len(str_pass) != num_caract: str_pass = str_pass + chr(random.randrange(48, 122)) desta form estas a poupar espaço na memoria que unica função é manter uma string com as letras que podem ser utilizadas para gerar a password. http://sousatg.github.io
Yana Posted September 1, 2012 at 08:13 PM Author Report #474269 Posted September 1, 2012 at 08:13 PM Podes altear o código dentro do while para while len(str_pass) != num_caract: str_pass = str_pass + chr(random.randrange(48, 122)) desta form estas a poupar espaço na memoria que unica função é manter uma string com as letras que podem ser utilizadas para gerar a password. ok Obrigado 🙂
icemonster2 Posted September 29, 2012 at 10:12 PM Report #477091 Posted September 29, 2012 at 10:12 PM Podias dar a escolher o nivel de segurança que o utilizados pretendia. Por ex: 2 niveis de segurança, um deles com caracteres especiais, fazias o mesmo que fizes-te: char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' char_especial = "!#$%&/()=" option = raw_input('Nivel de seguranca(1 ou 2): ') #ou input('') no py3 if option == 'nivel 2' or option == 'lvl 2' or option == '2': char += char_especial depois começavas o loop for como fizes-te. simples
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now