0906 - SumaCifre

From Bitnami MediaWiki

Cerință

Să se scrie o funcție Python care să determine suma cifrelor pare și suma cifrelor impare pentru un număr natural transmis ca parametru. Funcția va întoarce rezultatele prin intermediul unor parametri de ieşire.

Date de intrare

Un număr natural n mai mic decât 2.000.000.000.


Date de iesire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Programul va afișa două valori întregi, suma cifrelor pare şi suma cifrelor impare ale lui n. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții de precizări

Numele funcției va fi sumcif
Funcția va avea trei parametri: primul parametru reprezintă numărul n pentru care se calculează cifrele cerute,al doilea parametru va reprezenta suma cifrelor pare ale lui n, iar al treilea va reprezenta suma cifrelor impare ale lui n
n va fi număr natural mai mic decât 2.000.000.000

Exemplu

Exemplul 1

Intrare
1146
Ieșire
Datele corespund restricțiilor impuse.
Suma cifrelor pare ale lui 1146 este: 10
Suma cifrelor impare ale lui 1146 este: 2

Important

Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.


Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line="1" start="1"> def validare(n):

   return int(n) < 2_000_000_000


def sumcif(n, sum_pare, sum_impare):

   x = n
   while n > 0:
       cifra = n % 10
       if cifra % 2 == 0:
           sum_pare += cifra
       else:
           sum_impare += cifra
       n //= 10
   print("Suma cifrelor pare ale lui", x, "este:", sum_pare)
   print("Suma cifrelor impare ale lui", x, "este:", sum_impare)


if __name__ == '__main__':

   n = input("Introduceți un număr natural: ")
   sum_pare, sum_impare = 0, 0
   if validare(n):
       print("Datele corespund restricțiilor impuse.")
       n = int(n)
       sumcif(n, sum_pare, sum_impare)
   else:
       print("Datele nu corespund restricțiilor impuse.")

</syntaxhighlight>


Explicatii

Funcția validare(n) primește un număr n și returnează True dacă acesta este mai mic decât 2.000.000.000 și False în caz contrar.

Funcția sumcif(n, sum_pare, sum_impare) primește un număr n și două variabile sum_pare și sum_impare pentru a stoca suma cifrelor pare și suma cifrelor impare ale lui n. Algoritmul parcurge cifrele lui n prin extragerea cifrei unităților folosind operatorul modulo și împărțind numărul la 10. Dacă cifra este pară, aceasta este adăugată la suma cifrelor pare, iar dacă este impară, este adăugată la suma cifrelor impare. La final, se afișează sumele calculate pentru numărul n.

În blocul if __name__ == '__main__': se primește numărul n de la utilizator prin intermediul funcției input() și se inițializează variabilele sum_pare și sum_impare cu valoarea 0. Se verifică dacă numărul n respectă restricțiile cu ajutorul funcției validare(n) și, dacă da, se converteste într-un număr întreg și se apelează funcția sumcif(n, sum_pare, sum_impare) pentru a calcula suma cifrelor pare și impare ale lui n. Dacă numărul n nu respectă restricțiile, se afișează un mesaj corespunzător.