0032 - EliminareCifre: Difference between revisions

From Bitnami MediaWiki
Cata (talk | contribs)
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...
 
Cata (talk | contribs)
No edit summary
 
Line 6: Line 6:
* funcția va avea doi parametri: primul parametru este n, iar al doilea este c
* 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
* 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==
==Exemplu==
Dacă n=2524722 și c=2, după apelul funcției P(n,c), n va avea valoarea 547
; Intrare
 
: Introduceți un număr natural cu cel mult 9 cifre: 2524722
==Explicație==
: Introduceți o cifră între 0 și 9: 5
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.
; Ieșire
: Datele introduse sunt valide.
: Numărul obținut prin eliminarea cifrei 5 din 2524722 este: 224722


==Rezolvare==
==Rezolvare==
Line 31: Line 39:




def main_P():
if __name__ == "__main__":
     try:
     try:
         n = int(input("Introduceți un număr natural cu cel mult 9 cifre: "))
         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: "))
         c = int(input("Introduceți o cifră între 0 și 9: "))
         validare_P(n, c)
         validare_P(n, c)
        print("Datele introduse sunt valide.")
         rezultat = P(n, c)
         rezultat = P(n, c)
         print(f"Numărul obținut prin eliminarea cifrei {c} din {n} este: {rezultat}")
         print(f"Numărul obținut prin eliminarea cifrei {c} din {n} este: {rezultat}")
Line 41: Line 50:
         print(f"O eroare a survenit: {ex}")
         print(f"O eroare a survenit: {ex}")
</syntaxhighlight>
</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.

Latest revision as of 04:03, 3 May 2023

Cerinţa[edit]

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]

  • 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]

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

Date de ieșire[edit]

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]

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]

<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]

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.