0919 - NrCifreZeroRec1
Cerinţa
Să se scrie o funcție Python recursivă care să determine numărul de cifre egale cu zero ale unui număr natural transmis ca parametru și să întoarcă rezultatul prin intermediul unui parametru de ieșire.
Restricţii şi precizări
- Numele funcției va fi nr_cif_zero
- Funcția va avea doi parametri: n – reprezentând numărul dat și nr – parametrul prin care se întoarce rezultatul
- Ordinea parametrilor este n , nr
- n va fi mai mic decât 2.000.000.000
Explicație
Această funcție numără cifrele "0" din numărul dat "n". Funcția primește un număr "n" și un contor "nr" și returnează numărul de cifre "0" din "n".
Funcția verifică dacă "n" este zero și, dacă este cazul, se adaugă 1 la contorul "nr". În caz contrar, funcția verifică dacă ultima cifră a lui "n" este "0" și, dacă este cazul, se adaugă 1 la contorul "nr". Apoi, se face o apelare recursivă a funcției pentru partea "n" fără ultima cifră, până când "n" devine zero. În cele din urmă, funcția returnează numărul total de cifre "0" găsite în "n".
Rezolvare
<syntaxhighlight lang="python"> def validate_n(n):
if isinstance(n, int) and n >= 0: return True else: return False
def validate_nr(nr):
if isinstance(nr, int) and nr >= 0: return True else: return False
def nr_cif_zero(n, nr):
if n == 0: nr += 1 elif n > 0: if n % 10 == 0: nr += 1 nr = nr_cif_zero(n // 10, nr) return nr
def main():
n = input("Introduceti un numar intreg pozitiv: ") try: n = int(n) if validate_n(n): nr = nr_cif_zero(n, 0) if validate_nr(nr): print(f"Numarul de cifre 0 din numarul introdus este: {nr}") else: print("Numarul de cifre 0 obtinut nu este valid.") else: print("Numarul introdus nu este valid.") except ValueError: print("Nu ati introdus un numar intreg pozitiv.")
</syntaxhighlight>