al posto della list comprehesion suggerisco un bel `any` -> `if any(errors.values())`. any è una sorta di or aggreggato (reduce con or) invece `all` è una sorta di `and` aggreggato. ( E sono utili quando uno deve usare un sacco di or o di and)
Il giorno lun 5 mar 2018 alle ore 05:00 Karim <lemieli...@gmail.com> ha scritto: > 2018-03-05 10:05 GMT+11:00 Silvestro De Santis < > silvestro.desan...@gmail.com>: > >> Sera lista in attesa dei risultati elettorali stavo provando le regex con >> python, ho fatto una semplice funzione che determina se la >> > [...] >> >> > L'errore e' negli and, dovevano essere degli or. > > Dato che la funzione mi servira' in futuro per altri scopi, mi sono preso > la briga di implementarla. Io l'avrei fatta cosi': > > > import re > > > def validate_password(password): > """Validate the password based on "some" strenght rules > > :param str password: The password to validate > :returns: a tuple with the validation result and the errors details if > the > validation fails > :rtype: (True, None) or (False, dict) > > .. todo: > - The symbols check is not correct > """ > lenght = len(password) > digits = re.compile(r'\d+') > uppers = re.compile(r'[A-Z]+') > lowers = re.compile(r'[a-z]+') > symbols = re.compile(r'\\|-|@|_|\?') > > errors = { > 'lowers': False if lowers.search(password) else True, > 'lenght': bool(lenght < 8), > 'digits': False if digits.search(password) else True, > 'symbols': False if symbols.search(password) else True, > 'uppers': False if uppers.search(password) else True, > } > > if [error for error in errors.values() if error]: > return False, errors > else: > return True, None > > > if __name__ == '__main__': > pwd = input('Inserisci password: ') > robust, errors = validate_password(pwd) > > if not robust: > print('Errori trovati: %s' % errors.keys()) > else: > print('Password robusta') > > > Ciao > > > -- > Karim N. Gorjux > _______________________________________________ > Python mailing list > Python@lists.python.it > https://lists.python.it/mailman/listinfo/python >
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python