<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0863_-_Parole</id>
	<title>0863 - Parole - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0863_-_Parole"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0863_-_Parole&amp;action=history"/>
	<updated>2026-06-17T07:12:27Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0863_-_Parole&amp;diff=8387&amp;oldid=prev</id>
		<title>AntalKrisztian: Pagină nouă: Parolele sunt cele mai utilizate modalități de stabilire a identității unei persoane. În IT este necesară utilizarea unor parole tari, care să nu poată fi ghicite cu ajutorul unor programe specializate.  În continuare, prin parolă tare înțelegem un sir de caractere care respectă următoarele condiții:  * conține cel puțin &#039;&#039;&#039;8&#039;&#039;&#039; caractere * conține cel puțin o literă mică * conține cel puțin o literă mare * conține cel puțin o cifră * conține cel p...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0863_-_Parole&amp;diff=8387&amp;oldid=prev"/>
		<updated>2023-12-26T15:20:02Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Parolele sunt cele mai utilizate modalități de stabilire a identității unei persoane. În IT este necesară utilizarea unor parole tari, care să nu poată fi ghicite cu ajutorul unor programe specializate.  În continuare, prin parolă tare înțelegem un sir de caractere care respectă următoarele condiții:  * conține cel puțin &amp;#039;&amp;#039;&amp;#039;8&amp;#039;&amp;#039;&amp;#039; caractere * conține cel puțin o literă mică * conține cel puțin o literă mare * conține cel puțin o cifră * conține cel p...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Parolele sunt cele mai utilizate modalități de stabilire a identității unei persoane. În IT este necesară utilizarea unor parole tari, care să nu poată fi ghicite cu ajutorul unor programe specializate.&lt;br /&gt;
&lt;br /&gt;
În continuare, prin parolă tare înțelegem un sir de caractere care respectă următoarele condiții:&lt;br /&gt;
&lt;br /&gt;
* conține cel puțin &amp;#039;&amp;#039;&amp;#039;8&amp;#039;&amp;#039;&amp;#039; caractere&lt;br /&gt;
* conține cel puțin o literă mică&lt;br /&gt;
* conține cel puțin o literă mare&lt;br /&gt;
* conține cel puțin o cifră&lt;br /&gt;
* conține cel puțin un caracter dintre &amp;#039;&amp;#039;&amp;#039;.,?!;:_@#&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; o listă cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; parole. Să se determine câte dintre ele sunt &amp;#039;&amp;#039;&amp;#039;parole tari&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;parolein.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe fiecare dintre următoarele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii câte o parolă.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;paroleout.txt&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie de parole tari &amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; n &amp;amp;les; 1000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* fiecare linie fișierului de intrare va avea cel mult &amp;#039;&amp;#039;&amp;#039;50&amp;#039;&amp;#039;&amp;#039; de caractere&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; parolein.txt&lt;br /&gt;
 5&lt;br /&gt;
 al!ABe1Ar&lt;br /&gt;
 alfabetar&lt;br /&gt;
 a:1A&lt;br /&gt;
 Alfabetar&lt;br /&gt;
 qHj5K#.1NN&lt;br /&gt;
; paroleout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse.&lt;br /&gt;
 2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Cele două parole tari din listă sunt: &amp;#039;&amp;#039;&amp;#039;al!ABe1Ar&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;qHj5K#.1NN&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; parolein.txt&lt;br /&gt;
 aceastalinedecoddepasestecele50decaractereimpuse&lt;br /&gt;
; paroleout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
# functia de validare verifica daca datele de intrare sunt in intervalul specificat&lt;br /&gt;
def validare(n_validare, parole_validare):&lt;br /&gt;
    # verificam daca n este in intervalul 1-1000&lt;br /&gt;
    if not (1 &amp;lt;= n_validare &amp;lt;= 1000):&lt;br /&gt;
        raise ValueError  # ridicam o eroare daca n nu este in intervalul 1-1000&lt;br /&gt;
    for parola in parole_validare:  # parcurgem lista de parole&lt;br /&gt;
        # verificam daca lungimea parolei este mai mica sau egala cu 50&lt;br /&gt;
        if len(parola) &amp;gt; 50:&lt;br /&gt;
            raise ValueError&lt;br /&gt;
    file_out.write(&amp;quot;Datele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# functia este_parola_tare verifica daca o parola este tare&lt;br /&gt;
def este_parola_tare(parola):&lt;br /&gt;
    # verificam daca parola contine cel putin 8 caractere,&lt;br /&gt;
    # cel putin o litera mica, cel putin o litera mare, cel putin o cifra si cel putin un caracter special&lt;br /&gt;
    return (len(parola) &amp;gt;= 8 and any(caracter.islower() for caracter in parola)&lt;br /&gt;
            and any(caracter.isupper() for caracter in parola) and any(&lt;br /&gt;
                caracter.isdigit() for caracter in parola) and any(caracter in &amp;quot;.,?!;:_@#&amp;quot; for caracter in parola))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    file_in = open(&amp;quot;parolein.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    file_out = open(&amp;quot;paroleout.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        # citim numarul de parole&lt;br /&gt;
        n_main = int(file_in.readline())&lt;br /&gt;
        # citim parolele&lt;br /&gt;
        parole_main = [file_in.readline().strip() for _ in range(n_main)]&lt;br /&gt;
        # validam datele de intrare&lt;br /&gt;
        validare(n_main, parole_main)&lt;br /&gt;
        # numaram cate parole sunt tari si scriem rezultatul in fisierul de iesire&lt;br /&gt;
        file_out.write(str(sum(este_parola_tare(parola) for parola in parole_main)) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    # daca datele de intrare nu sunt valide, afisam un mesaj de eroare&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        file_out.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
    # daca datele de intrare sunt incomplete, afisam un mesaj de eroare&lt;br /&gt;
    except IndexError:&lt;br /&gt;
        file_out.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>AntalKrisztian</name></author>
	</entry>
</feed>