0906 - SumaCifre
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
- Dupa apelul
- sumcif(274 , s , t);
- Ieșire
- s va avea valoarea 6, iar t va avea valoarea 7.
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.