## !!! Heslo !!!
## K zaisteniu bezpečnosti informačného systému je nevyhnutné vytvoriť si silné heslo.
## Za silné heslo budeme považovať reťazec, ktorý je vytvorený podľa nasledujúcich pravidiel:
## má minimálne 10 znakov, obsahuje aspoň dva špeciálne znaky (*,  $, @, #, <, >, /, +),
## obsahuje aspoň tri číslice a veľké aj malé písmená.

## a) načítaj heslo a otestuj jeho dĺžku
## b) otestuj, či spĺňa ďalšie kritériá
## c) ak heslo nie je dostačujúce, vygeneruj nové heslo, ktoré spĺňa všetky pravidlá

##kodovanie
#cisla 48-57
#velke 65-90
#male 97-122


import random

def generuj_heslo():
    nove_heslo = ''
    for znak in range(2):
        nove_heslo += random.choice("*, $, #, @,<, >, /, +")
        
    for cislo in range(3):
        nove_heslo += chr(random.randint(48, 57))
        
    for velke in range(3):
        nove_heslo += chr(random.randint(65,90))
        
    for male in range (3):
        nove_heslo += chr(random.randint(97,123))
                          
    nove_heslo = list(nove_heslo)    #z písmen hesla urobíme zoznam, 
    random.shuffle(nove_heslo)       # písmená zamiešame 
    nove_heslo = ''.join(nove_heslo) # potom ich znova spojíme do jedného stringu
    return nove_heslo


heslo = input("Zadaj heslo: ")
dlzka = len(heslo)
spec_znak = 0
cislice = 0
male = 0
velke = 0
if dlzka >= 10:
    for znak in heslo:
        if znak in "*, $, #, @,<, >, /, +":
            spec_znak += 1
        if "A"<= znak <= "Z" :
            velke += 1
        if "a" <= znak <= "z":
            male += 1
        if "0" <= znak <= "9":
            cislice += 1
    if spec_znak >=2 and cislice >= 3 and male >= 1 and velke >=1:
        print("Heslo je bezpečné")
    else:
      print("Heslo nie je dostačujúce!!!")
      print("Nové heslo:", generuj_heslo())
else:
    print("Heslo je príliš krátke!")
    print("Nové heslo:", generuj_heslo())
