0919 - NrCifreZeroRec1: Difference between revisions
Pagină nouă: == 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â... |
No edit summary |
||
Line 7: | Line 7: | ||
* Ordinea parametrilor este n , nr | * Ordinea parametrilor este n , nr | ||
* n va fi mai mic decât 2.000.000.000 | * 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 == | == Rezolvare == | ||
<syntaxhighlight lang="python"> | <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): | def nr_cif_zero(n, nr): | ||
if n == 0: | if n == 0: | ||
Line 20: | Line 34: | ||
nr = nr_cif_zero(n // 10, nr) | nr = nr_cif_zero(n // 10, nr) | ||
return 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> | </syntaxhighlight> |
Revision as of 13:47, 6 April 2023
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>