Gerador de senha do Lucas

Complexidade da senha:

Senha gerada:

from js import document from pyodide import create_proxy import random def gerar_senha(): senha = [] minimo = 0 opcoes = { "numeral":document.getElementById("numero").checked, "letra":document.getElementById("minuscula").checked, "maiuscula":document.getElementById("maiuscula").checked, "especiais":document.getElementById("especial").checked, "caracteres":document.getElementById("caracteres").value } if opcoes['numeral'] == False and ['letra'] == False and ['maiuscula'] == False and ['especiais'] == False: return 'escolha ao menos uma opção para gerar a senha' if opcoes['caracteres'] == "": return 'selecione ao menos um caractere para a senha' if opcoes['numeral']: minimo = minimo + 1 if opcoes['letra']: minimo = minimo + 1 if opcoes['maiuscula']: minimo = minimo + 1 if opcoes['especiais']: minimo = minimo + 1 caracteres = int(opcoes['caracteres']) if minimo > caracteres: return 'não é possivel fazer a senha com poucos algarismos para essa configuração' while caracteres != 0: if opcoes['numeral']: senha.append(str(random.randint(0, 9))) caracteres = caracteres - 1 if caracteres != 0: if opcoes['letra']: letras = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] numero = random.randint(0, 25) senha.append(letras[numero]) caracteres = caracteres - 1 if caracteres != 0: if opcoes['maiuscula']: maiusculas = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] numero = random.randint(0, 25) senha.append(maiusculas[numero]) caracteres = caracteres - 1 if caracteres != 0: if opcoes['especiais']: especial = ['!','@','#','$','%','&','?','*',] numero = random.randint(0, 7) senha.append(especial[numero]) caracteres = caracteres - 1 random.shuffle(senha) return ''.join(senha) def runPython(e): senha = gerar_senha() pyscript.write('senha', senha) print(document.getElementById("numero").checked) function_proxy = create_proxy(runPython) document.getElementById("button").addEventListener("click", function_proxy)