0032 - EliminareCifre
Cerinţa
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
- 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
Programul citește de la tastatură numerele n și c.
Date de ieșire
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
- 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
<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
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.