0032 - EliminareCifre

De la Universitas MediaWiki
Versiunea din 6 aprilie 2023 14:13, autor: Cata (discuție | contribuții) (Pagină nouă: ==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ă elimina...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

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

Exemplu

Dacă n=2524722 și c=2, după apelul funcției P(n,c), n va avea valoarea 547

Explicație

Funcția P(n, c) primește un număr natural n și o cifră c și elimină toate aparițiile cifrei c din n. Pentru a realiza aceasta, funcția va converti n într-un șir de caractere și va itera prin fiecare cifră din șirul respectiv. Dacă cifra respectivă este diferită de c, ea va fi adăugată la un șir rezultat result. La final, funcția va returna șirul result convertit înapoi la număr întreg. În cazul în care numărul rezultat este 0 sau conține doar cifre 0, funcția va returna 0.

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)


def main_P():
    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)
        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}")