0822 - NrCifreZeroRec

From Bitnami MediaWiki
Revision as of 13:41, 6 April 2023 by Cata (talk | contribs)

Cerinţa

Să se scrie o funcție Python recursivă care să returneze numărul de cifre egale cu zero ale unui număr natural transmis ca parametru.

Restricţii şi precizări

  • Numele funcției va fi nr_cif_zero
  • Funcția va avea un parametru reprezentând numărul dat
  • Numărul pentru care se calculează numărul de cifre egale cu zero va fi mai mic decât 2.000.000.000

Exemplu

nr_cif_zero(2050) este 2.

Explicație

Această funcție numără câte cifre zero sunt prezente într-un număr dat. Ea verifică dacă ultima cifră a numărului este 0 și numără această cifră dacă este cazul. Dacă ultima cifră nu este zero, se elimină ultima cifră din număr și se reapelează funcția pentru restul numărului. Acest proces se repetă până când numărul devine 0 și se returnează numărul total de cifre zero.

Rezolvare

<syntaxhighlight lang="python"> def validate_n(n):

   if isinstance(n, int) and n > 0:
       return True
   else:
       return False

def nr_cif_zero(n):

   if n == 0:
       return 0
   if n % 10 == 0:
       return 1 + nr_cif_zero(n // 10)
   else:
       return nr_cif_zero(n // 10)

def main():

   n = input("Introduceți un număr întreg pozitiv: ")
   try:
       n = int(n)
       if validate_n(n):
           result = nr_cif_zero(n)
           print(f"Numărul de cifre zero din numărul introdus este: {result}")
       else:
           print("Numărul introdus nu este valid.")
   except ValueError:
       print("Nu ați introdus un număr întreg.")

</syntaxhighlight>