4281 - Min 2 Cif: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: == Rezolvare == <syntaxhighlight lang="python" line="1"> min_two_digit = None # inițializăm cu None pentru a verifica mai târziu dacă am găsit sau nu un număr cu 2 cifre while True: n = int(input()) # citim un număr if n == 0: # dacă am ajuns la sfârșitul secvenței, ieșim din buclă break if 10 <= n <= 99: # dacă n are două cifre if min_two_digit is None or n < min_two_digit: # dacă n este mai mic decât minimul găsit până ac...)
 
Fără descriere a modificării
 
Linia 1: Linia 1:
Sursă: [https://www.pbinfo.ro/probleme/4281/min2cif]
== Cerință ==
Se citesc de la tastatură numere naturale până la apariția lui zero. Să se determine cel mic număr citit care are două cifre.
== Date de intrare ==
Programul citește de la tastatură numere naturale. Citirea se încheie la introducerea valorii '''0'''.
== Date de ieșire ==
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.". Programul afișează pe ecran '''M''', cel mai mic număr citit care are două cifre. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
== Restricții și precizări ==
* numerele citite vor fi mai mici decât '''10000'''
* dacă niciun număr citit nu are două cifre, se va afișa '''NU EXISTA'''
== Exemple ==
=== Exemplu 1 ===
; Date de intrare
:105 63 20 4 0
; Date de ieșire
: 20
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
min_two_digit = None  # inițializăm cu None pentru a verifica mai târziu dacă am găsit sau nu un număr cu 2 cifre
def verificare():
while True:
    numere = []
    n = int(input()) # citim un număr
    while True:
    if n == 0: # dacă am ajuns la sfârșitul secvenței, ieșim din buclă
        numar = input("Introduceti o valoare: ")
        break
        try:
    if 10 <= n <= 99: # dacă n are două cifre
            numar = int(numar)
         if min_two_digit is None or n < min_two_digit: # dacă n este mai mic decât minimul găsit până acum
            if numar == 0:
            min_two_digit = n # actualizăm minimul
                break
if min_two_digit is None: # dacă nu am găsit niciun număr cu două cifre
            elif 10 <= numar <= 99:
    print("NU EXISTA")
                print("Datele sunt corecte.")
else: # altfel, afișăm minimul găsit
                numere.append(numar)
    print(min_two_digit)
            else:
                print("Datele nu sunt conform restricțiilor impuse.")
        except ValueError:
            print("Trebuie respectate cerintele.")
    return numere
 
def Min2Cif(numere):
    if len(numere) == 0:
        return None
    numar_min = numere[0]
    for n in numere:
         if n < numar_min:
            numar_min = n
    return numar_min
 
if _name_ == '_main_':
    n = verificare()
    MIN = Min2Cif(n)
    if MIN is None:
        print("NU EXISTA.")
    else:
        print("Cel mai mic număr cu două cifre este:", MIN)
</syntaxhighlight>
</syntaxhighlight>
== Explicatie ==
Acest cod are ca scop găsirea celui mai mic număr cu două cifre dintr-o listă de numere întregi citite de la tastatură.
Funcția verificare inițializează o listă goală numere și utilizează o buclă while infinită pentru a citi de la tastatură valori până când se introduce valoarea zero. În interiorul buclei, se verifică dacă valoarea introdusă este un număr întreg prin încercarea conversiei la tipul int. Dacă conversia nu este posibilă, se afișează un mesaj de eroare și se continuă bucla. Dacă conversia este posibilă, se verifică dacă numărul respectă cerințele impuse, respectiv să fie un număr cu două cifre (între 10 și 99). Dacă nu respectă cerințele, se afișează un mesaj de eroare și se continuă bucla. În caz contrar, se afișează un mesaj de confirmare și se adaugă numărul la lista numere.
Funcția Min2Cif primește ca argument lista numere și parcurge fiecare element din listă pentru a găsi cel mai mic număr cu două cifre. Dacă lista este goală, se returnează None.
Blocul if _name_ == '_main_': este folosit pentru a rula codul din funcția main doar atunci când acesta este executat ca program și nu ca modul importat în alt cod. Se apelează funcția verificare pentru a citi valori de la tastatură și se salvează rezultatul în variabila n. Se apelează apoi funcția Min2Cif cu argumentul n și se salvează rezultatul în variabila MIN. Dacă MIN este None, se afișează un mesaj că "NU EXISTA." Altfel, se afișează un mesaj care indică cel mai mic număr cu două cifre găsit.

Versiunea curentă din 26 aprilie 2023 09:38

Sursă: [1]

Cerință

Se citesc de la tastatură numere naturale până la apariția lui zero. Să se determine cel mic număr citit care are două cifre.

Date de intrare

Programul citește de la tastatură numere naturale. Citirea se încheie la introducerea valorii 0.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.". Programul afișează pe ecran M, cel mai mic număr citit care are două cifre. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".

Restricții și precizări

  • numerele citite vor fi mai mici decât 10000
  • dacă niciun număr citit nu are două cifre, se va afișa NU EXISTA

Exemple

Exemplu 1

Date de intrare
105 63 20 4 0
Date de ieșire
20

Rezolvare

def verificare():
    numere = []
    while True:
        numar = input("Introduceti o valoare: ")
        try:
            numar = int(numar)
            if numar == 0:
                break
            elif 10 <= numar <= 99:
                print("Datele sunt corecte.")
                numere.append(numar)
            else:
                print("Datele nu sunt conform restricțiilor impuse.")
        except ValueError:
            print("Trebuie respectate cerintele.")
    return numere

def Min2Cif(numere):
    if len(numere) == 0:
        return None
    numar_min = numere[0]
    for n in numere:
        if n < numar_min:
            numar_min = n
    return numar_min

if _name_ == '_main_':
    n = verificare()
    MIN = Min2Cif(n)
    if MIN is None:
        print("NU EXISTA.")
    else:
        print("Cel mai mic număr cu două cifre este:", MIN)

Explicatie

Acest cod are ca scop găsirea celui mai mic număr cu două cifre dintr-o listă de numere întregi citite de la tastatură.
Funcția verificare inițializează o listă goală numere și utilizează o buclă while infinită pentru a citi de la tastatură valori până când se introduce valoarea zero. În interiorul buclei, se verifică dacă valoarea introdusă este un număr întreg prin încercarea conversiei la tipul int. Dacă conversia nu este posibilă, se afișează un mesaj de eroare și se continuă bucla. Dacă conversia este posibilă, se verifică dacă numărul respectă cerințele impuse, respectiv să fie un număr cu două cifre (între 10 și 99). Dacă nu respectă cerințele, se afișează un mesaj de eroare și se continuă bucla. În caz contrar, se afișează un mesaj de confirmare și se adaugă numărul la lista numere.
Funcția Min2Cif primește ca argument lista numere și parcurge fiecare element din listă pentru a găsi cel mai mic număr cu două cifre. Dacă lista este goală, se returnează None.
Blocul if _name_ == '_main_': este folosit pentru a rula codul din funcția main doar atunci când acesta este executat ca program și nu ca modul importat în alt cod. Se apelează funcția verificare pentru a citi valori de la tastatură și se salvează rezultatul în variabila n. Se apelează apoi funcția Min2Cif cu argumentul n și se salvează rezultatul în variabila MIN. Dacă MIN este None, se afișează un mesaj că "NU EXISTA." Altfel, se afișează un mesaj care indică cel mai mic număr cu două cifre găsit.