0032 - EliminareCifre

De la Universitas MediaWiki

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

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}")

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.