CURS ONLINE INTERACTIV

Python 3

PENTRU ÎNCEPĂTORI


"Primul volum Python în română care pur și simplu m-a uimit. Foarte bine explicat și ușor de înțeles." (Alexandru Cosmin)

"Cea mai bună carte de Python din RO." (Iulian Geană)

"Livrare promptă! M-am pus pe treabă!" (Emil Ilie)

TOATE RECENZIILE
ALGORITMI
PROGRAMARE
Cifrele unui număr natural
Acasă >>> Lecții online, limbajul Python 3

Numere naturale formate din exact 3 cifre

Pentru a accesa cifrele unui număr natural folosim operatorii % și //. Operatorul % calculează restul împărțirii, iar operatorul // calculează câtul împărțirii întregi. Urmăriți simularea de mai jos pentru a observa, pas cu pas, cum sunt extrase cifra unităților, cifra zecilor și cifra sutelor dintr-un număr natural format din trei cifre:

5

8

3

SUTE

?

ZECI

?

UNITĂȚI

?

1 unitati = n % 10
2 zeci = n // 10 % 10
3 sute = n // 100
Pregătit 0/3
Apasă „Pornește” sau „Pasul următor”.
Observații
  • Operatorul % calculează restul împărțirii, iar operatorul // calculează câtul împărțirii întregi.
  • Expresia n % 10 determină întotdeauna ultima cifră a unui număr natural.
  • Expresia n // 10 elimină ultima cifră a numărului.
  • Numărul poate fi reconstruit folosind formula: n = sute * 100 + zeci * 10 + unitati.
  • Operațiile nu modifică valoarea variabilei n decât dacă rezultatul este atribuit din nou acesteia.

Numere naturale formate din n cifre

În exemplul anterior am știut de la început că numărul are exact trei cifre și am putut extrage separat cifra unităților, cifra zecilor și cifra sutelor. Dar ce facem dacă numărul poate avea oricâte cifre?

În acest caz, nu mai putem scrie câte o instrucțiune pentru fiecare poziție. Avem nevoie de un algoritm care să funcționeze indiferent dacă numărul are 3, 5 sau 100 de cifre.

Ideea este simplă: extragem ultima cifră cu % 10, apoi o eliminăm cu // 10. Repetăm aceste operații cât timp numărul mai conține cifre.

while n > 0:
    cifra = n % 10   # 1. Extragem ultima cifră
    print(cifra)     # 2. Facem ceva cu ea (ex: o afișăm)
    n = n // 10      # 3. Taiem ultima cifră


De exemplu, pentru n = 5837, valorile obținute sunt:

n n % 10 Cifra extrasă n // 10
5837 7 7 583
583 3 3 58
58 8 8 5
5 5 5 0
Observăm că cifrele sunt extrase de la dreapta la stânga: 7, 3, 8, 5.

Exemplu ➕ Suma cifrelor

Să calculăm suma cifrelor unui număr:

n = int(input("n = "))
s = 0

while n > 0:
    cifra = n % 10
    s = s + cifra
    n = n // 10

print("Suma cifrelor este:", s)


Pentru n = 58321, se va calcula 5+8+3+2+1 și se va afișa 19.

Atenție! ⚠️ La finalul programului, valoarea lui n a fost alterată. Căt rămâne de fapt?

🧠 Prin aceeași idee putem rezolva numeroase probleme: numărul cifrelor, produsul cifrelor, cifra maximă sau minimă, numărul cifrelor pare, verificarea apariției unei cifre și multe altele.

Hack cu string

În Python există și o metodă foarte rapidă de a lucra cu cifrele unui număr: îl putem transforma temporar într-un șir de caractere, folosind str().

De exemplu:

n = 5837
s = str(n)
print(s)


Variabila s va conține textul "5837". Din acest moment, fiecare cifră poate fi accesată exact ca un caracter dintr-un șir, cum suntem deja obișnuiți:

print(s[0]) # 5
print(s[1]) # 8
print(s[-1]) # 7


Dacă vrem să parcurgem toate cifrele:

n = 5837
for cifra in str(n):
    print(cifra)


Atenție: variabila cifra este aici de tip str, nu int. Dacă vrem să facem calcule cu ea, o transformăm în număr:

n = 5837
s = 0
for cifra in str(n):
    s = s + int(cifra)
print(s)


Rezultatul va fi:

23

Putem scrie chiar și o variantă foarte compactă:

s = sum(int(cifra) for cifra in str(n))

💡 De ce este un „hack”? Pentru că nu mai extragem cifrele matematic, cu % 10 și // 10, ci privim numărul ca pe o succesiune de caractere.

Astfel, unele probleme devin foarte ușor de rezolvat:

n = 58321

print(len(str(n))) # numărul cifrelor
print(max(str(n))) # cifra maximă
print(min(str(n))) # cifra minimă
print(str(n).count("8")) # de câte ori apare cifra 8


Putem verifica rapid chiar și dacă o anumită cifră apare în număr:

n = 58321
if "8" in str(n):
    print("Cifra 8 apare în număr.")


Important ⚠️ Metoda cu str() este foarte comodă și „pythonică”, dar metoda matematică rămâne importantă pentru înțelegerea algoritmilor clasici de prelucrare a cifrelor. Merită să le cunoașteți pe amândouă!
Secțiunea s-a terminat.

Cărțile editurii noastre
O parte dintre manualele și culegerile de probleme se găsește și [în format electronic] securizat sub formă de fișier *.pdf.

"O cameră fără cărţi este ca un corp fără suflet." (G. K. Chesterton)

Cursanții au mai cumpărat ...
[vezi lista completă a cărților]

 home   list  LECȚII   perm_identity   arrow_upward