0032 - EliminareCifre

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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.