0032 - EliminareCifre

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Să se scrie definiția completă a funcției Python P care primește prin intermediul parametrului n un număr natural cu cel mult 9 cifre, iar prin intermediul parametrului c o cifră. Funcția întoarce tot prin intermediul parametrului n numărul obținut prin eliminarea tuturor aparițiilor cifrei c.

Restricţii şi precizări[edit | edit source]

  • numele funcției va fi P
  • funcția va avea doi parametri: primul parametru este n, iar al doilea este c
  • dacă după eliminare numărul obținut nu mai conține nici o cifră sau conține doar cifre 0, rezultatul va fi 0

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n și c.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt valide.", apoi pe un rând nou numărul n fără cifrele c. În cazul în care n sau c depășesc limitele date ori nu sunt numere întregi, se va afișa un mesaj corespunzător în funcție de eroarea generată.

Exemplu[edit | edit source]

Intrare
Introduceți un număr natural cu cel mult 9 cifre: 2524722
Introduceți o cifră între 0 și 9: 5
Ieșire
Datele introduse sunt valide.
Numărul obținut prin eliminarea cifrei 5 din 2524722 este: 224722

Rezolvare[edit | edit source]

<syntaxhighlight lang="python"> def validare_P(n, c):

   if not isinstance(n, int) or n < 0:
       raise ValueError("n trebuie să fie un număr natural")
   if not isinstance(c, int) or not 0 <= c <= 9:
       raise ValueError("c trebuie să fie o cifră între 0 și 9")


def P(n, c):

   validare_P(n, c)
   n_str = str(n)
   n_fara_c = "".join([cifra for cifra in n_str if cifra != str(c)])
   if len(n_fara_c) == 0 or all(cifra == "0" for cifra in n_fara_c):
       return 0
   return int(n_fara_c)


if __name__ == "__main__":

   try:
       n = int(input("Introduceți un număr natural cu cel mult 9 cifre: "))
       c = int(input("Introduceți o cifră între 0 și 9: "))
       validare_P(n, c)
       print("Datele introduse sunt valide.")
       rezultat = P(n, c)
       print(f"Numărul obținut prin eliminarea cifrei {c} din {n} este: {rezultat}")
   except Exception as ex:
       print(f"O eroare a survenit: {ex}")

</syntaxhighlight>

Explicație[edit | edit source]

Funcția `validare_P(n, c)` este utilizată pentru a verifica dacă argumentele primite de funcția `P(n, c)` respectă anumite condiții. Aceasta verifică dacă `n` este un număr natural (întreg pozitiv) și dacă `c` este o cifră între 0 și 9. Dacă oricare dintre aceste condiții nu este îndeplinită, se va arunca o excepție de tip `ValueError` cu un mesaj corespunzător.

Funcția `P(n, c)` primește două argumente: `n`, un număr natural cu cel mult 9 cifre și `c`, o cifră între 0 și 9. Aceasta mai întâi verifică dacă argumentele primite sunt valide, folosind funcția `validare_P(n, c)`. Apoi, convertește numărul `n` la un șir de caractere și elimină toate aparițiile cifrei `c` din șirul obținut, folosind o listă de comprimare și funcția `join()`. Dacă șirul obținut are lungimea 0 sau conține doar cifra 0, se va returna 0. În caz contrar, se va returna numărul format din șirul obținut, folosind funcția `int()`.

În blocul `if __name__ == "__main__":` se citește numărul `n` și cifra `c` de la tastatură. Se verifică apoi dacă acestea sunt valide, folosind funcția `validare_P(n, c)`. Dacă acestea sunt valide, se afișează un mesaj de confirmare și se calculează rezultatul apelând funcția `P(n, c)`. În caz contrar, se va afișa mesajul de eroare corespunzător.