3664 - Cif Par Cif Imp: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
Linia 35: Linia 35:
def validate_input(n):
def validate_input(n):
     if not 1 <= n <= 10:
     if not 1 <= n <= 10:
         print("Numărul de numere trebuie să fie între 1 și 10.")
         print("Datele introduse nu corespund cerintelor.")
         return False
         return False
     return True
     return True
Linia 62: Linia 62:
         n = int(input(f"Introduceți numărul {i + 1}: "))
         n = int(input(f"Introduceți numărul {i + 1}: "))
         if n >= 1000000000:
         if n >= 1000000000:
             print("Datele de intrare nu corespund restrictiilor impuse")
             print("Datele de intrare nu corespund cerintelor")
             continue
             continue
         pare, impare = count_parity_digits(n)
         pare, impare = count_parity_digits(n)

Versiunea de la data 26 aprilie 2023 16:08

Sursă: [1]

Cerinţa

Se dau n numere naturale. Determinaţi câte cifre pare şi câte cifre impare se află în total în cele n numere.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieşire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restrictiilor impuse", apoi pe un rând nou va afișa numărul de cifre pare și impare separate printr-un spațiu. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse.

Restricții și precizări

  • 1 ⩽ n ⩽ 10
  • cele n numere citite vor fi mai mici decât 1.000.000.000.

Exemplul 1

Intrare
Introduceți numărul de numere: 3
Introduceți numărul 1: 11
Introduceți numărul 2: 30
Introduceți numărul 3: 3
Ieșire
1 4

Exemplul 2

Intrare
Introduceți numărul de numere: 0
Iesire
Numărul de numere trebuie să fie între 1 și 10.

Rezolvare

#3664
def validate_input(n):
    if not 1 <= n <= 10:
        print("Datele introduse nu corespund cerintelor.")
        return False
    return True


def count_parity_digits(n):
    pare = 0
    impare = 0
    while n > 0:
        cifra = n % 10
        if cifra % 2 == 0:
            pare += 1
        else:
            impare += 1
        n //= 10
    return pare, impare


if __name__ == '__main__':
    numere = int(input("Introduceți numărul de numere: "))
    if not validate_input(numere):
        exit()
    pare_total = 0
    impare_total = 0
    for i in range(numere):
        n = int(input(f"Introduceți numărul {i + 1}: "))
        if n >= 1000000000:
            print("Datele de intrare nu corespund cerintelor")
            continue
        pare, impare = count_parity_digits(n)
        pare_total += pare
        impare_total += impare

    print(f"Datele de intrare corespund restrictiilor impuse\n{pare_total} {impare_total}")