Școala Româno-Britanică
Modulul 3 Clasa a IX-a | Python

Ora 1: Operații cu cifrele unui număr

Ce vei învăța astăzi: Extragerea cifrelor, adăugarea unei cifre la stânga și la dreapta

Rezultat practic: Extragi cifrele unui număr și adaugi cifre la stânga sau la dreapta folosind % și // (Competența 1.2).

Competența 1.2 Săptămâna 13

Înainte de a începe

De ce contează? Extragerea și adăugarea cifrelor cu % și // stau la baza tuturor algoritmilor modulului: oglinditul, palindromul și chiar conversiile între baze folosesc aceleași operații.

Ce știi deja?

Știi să scrii o buclă while și să folosești operatorii aritmetici de bază (+, -, *, //, %)? Amintește-ți: restul împărțirii (ceea ce rămâne după împărțire, de exemplu 17 % 5 = 2) se obține cu %, iar câtul întreg (rezultatul împărțirii fără rest, de exemplu 17 // 5 = 3) cu //. Calculează 17 % 5 și 17 // 5 înainte de a continua.

Ideea-cheie: Orice cifră a unui număr se izolează cu n % 10, se elimină cu n // 10, iar un număr nou se construiește cifră cu cifră cu n = n * 10 + c.
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

Ce vei învăța astăzi?

După această lecție vei ști să extragi cifrele unui număr și să adaugi o cifră la dreapta sau la stânga unui număr.

Extragerea ultimei cifre cu n % 10
Eliminarea ultimei cifre cu n // 10
Adăugarea unei cifre la dreapta
Adăugarea unei cifre la stânga
Operații de bază cu cifrele unui număr

Extragerea ultimei cifre

Definiție: Ultima cifră a unui număr natural n se obține cu operația n % 10. Operatorul % ne dă restul împărțirii lui n la 10.

De exemplu, pentru n = 1234, avem 1234 % 10 = 4, adică ultima cifră a lui 1234 este 4.

Analogie

Imaginează-ți un număr ca pe o cutie cu bile pe etaje. Restul împărțirii la 10 îți arată exact bila de la parter, adică unitățile. Nu contează câte etaje are cutia, bila de jos este mereu ultima cifră.

Eliminarea ultimei cifre

Definiție: Pentru a elimina ultima cifră a unui număr n folosim operația n // 10. Operatorul // este împărțirea întreagă, adică ne dă câtul fără virgulă.

De exemplu, 1234 // 10 = 123. Am „tăiat" ultima cifră (4) și am rămas cu 123.

Exemplu: extragem cifrele lui 1234 în ordine inversă

ALGORITMUL Extragerea cifrelor lui n cât timp n > 0 execută c <- n % 10 // extragem ultima cifră prelucrează cifra c n <- n // 10 // eliminăm ultima cifră sfârșit cât timp
Python - cifrele lui 1234, de la coadă la cap
n = 1234
while n > 0:
    print(n % 10, end=" ")
    n = n // 10

Observă: la fiecare pas scoatem ultima cifră cu % 10, apoi o eliminăm cu // 10, până când n devine 0. Rezultatul afișat este: 4 3 2 1.

Adăugarea unei cifre la dreapta

Definiție: Pentru a adăuga o cifră c la dreapta unui număr n folosim formula n = n * 10 + c. Înmulțim numărul cu 10 (facem loc pentru o cifră nouă) și adunăm cifra.

De exemplu, dacă n = 12 și adăugăm cifra 7, obținem 12 * 10 + 7 = 127.

Exemplu în Python

Python - adăugarea cifrei 7 la dreapta lui 12
n = 12
c = 7
n = n * 10 + c
print(n)

Observă: acest tipar este folosit pentru a construi un număr nou, cifră cu cifră, de exemplu atunci când formăm oglinditul.

Adăugarea unei cifre la stânga

Definiție: Pentru a adăuga o cifră c la stânga unui număr n folosim formula n = c * 10**p + n, unde p este numărul de cifre ale lui n (adică puterea lui 10 corespunzătoare: 10 înmulțit cu el însuși de p ori, de exemplu 10**2 = 100).

De exemplu, dacă n = 23 (are 2 cifre, deci p = 2) și adăugăm cifra 5 la stânga, obținem 5 * 10**2 + 23 = 500 + 23 = 523.

Analogie

Adăugarea la dreapta este ca și cum ai pune o bilă nouă la parter. Adăugarea la stânga este ca și cum ai pune bila nouă pe acoperiș: toate celelalte bile coboară cu un etaj, deci trebuie să înmulțești cu puterea potrivită a lui 10.

Operație Formula Exemplu
Ultima cifră n % 10 1234 % 10 = 4
Elimină ultima cifră n // 10 1234 // 10 = 123
Adaugă cifra c la dreapta n = n * 10 + c 12 * 10 + 7 = 127
Adaugă cifra c la stânga n = c * 10**p + n 5 * 10**2 + 23 = 523

Exercițiu de completare

Completează afirmațiile despre operațiile cu cifre cu simbolurile potrivite:

Ultima cifră a unui număr n se obține cu operația n ______ 10. Pentru a elimina ultima cifră folosim n ______ 10. Pentru a adăuga o cifră c la dreapta lui n folosim n = n ______ 10 + c. Pentru a adăuga o cifră la stânga avem nevoie de puterea lui ______, adică n = c * 10**p + n.

Bancă de cuvinte:
% // * 10

Test de înțelegere

Test rapid - operații cu cifre:

1. Ultima cifră a numărului 123 este:

2. Rezultatul operației 123 // 10 este:

3. Adăugarea cifrei 7 la dreapta lui 12 dă numărul:

Test de înțelegere - suplimentar

Test rapid suplimentar - operații cu cifre:

1. Cifra zecilor a numărului 1234 este:

2. Adăugarea cifrei 5 la stânga lui 23 dă numărul:

3. Pentru a elimina ultima cifră a unui număr n folosim:

Ai grijă la: n % 10 și n // 10 nu sunt interschimbabile: % dă ultima cifră (restul), iar // o elimină (câtul). Pentru n = 1234, n % 10 = 4, dar n // 10 = 123.

Aprofundare

Cazul n = 0: pentru n = 0, bucla while n > 0 nu se execută nici măcar o dată. Dacă problema cere „numărul de cifre al lui 0", rezultatul nu este 0, ci 1, pentru că 0 este scris cu o singură cifră. De aceea, unele probleme tratează separat cazul n = 0, cu o verificare if n == 0 înaintea buclei.

Cifre repetate: dacă un număr are cifre identice, de exemplu 777, operația n % 10 întoarce aceeași cifră la fiecare pas, dar de fiecare dată este o poziție diferită (unități, zeci, sute). Oglinditul lui 777 este tot 777, deci orice număr cu toate cifrele egale este automat palindrom.

Adăugarea la stânga și puterile lui 10: formula n = c * 10**p + n presupune că știm numărul de cifre p ale lui n. Putem calcula p fără o buclă separată folosind conversia la șir: p = len(str(n)). Pentru numere cu multe cifre, 10**p crește foarte repede, de aceea în programele de competiție se preferă construirea oglinditului, care nu are nevoie de puteri ale lui 10.

Ordinea operațiilor: la adăugarea unei cifre la dreapta trebuie întâi să înmulțim cu 10 și apoi să adunăm cifra. Dacă am scrie n = n + c * 10, am adăuga cifra la stânga, ceea ce produce un rezultat complet diferit. Verifică întotdeauna cu un exemplu numeric înainte de a rula programul.

APLICARE ȘI REZOLVARE DE PROBLEME

PbInfo - Ultima cifră a unui număr

Enunț:

Cerință: Se citește un număr natural n. Să se afișeze ultima cifră a lui n.

Date de intrare:

Programul citește de la tastatură numărul n.

Date de ieșire:

Programul va afișa pe ecran ultima cifră a lui n.

Restricții și precizări:

Numerele citite sunt numere naturale, cu valori mai mici decât 10^9.

Exemplu:

Intrare:

1234

Ieșire:

4
Cum gândim soluția:
  1. Citim numărul n cu input() și îl transformăm cu int()
  2. Ultima cifră este restul împărțirii lui n la 10: n % 10
  3. Afișăm rezultatul cu print()
Scrie soluția în Python:
Soluție corectă:
n = int(input())

print(n % 10)

Ce învățăm: ultima cifră a oricărui număr natural se obține întotdeauna cu operația n % 10.

PbInfo - Cifra zecilor

Enunț:

Cerință: Se citește un număr natural n. Să se afișeze cifra zecilor a lui n.

Date de intrare:

Programul citește de la tastatură numărul n.

Date de ieșire:

Programul va afișa pe ecran cifra zecilor a lui n.

Restricții și precizări:

Numerele citite sunt numere naturale, cu valori mai mici decât 10^9.

Exemplu:

Intrare:

1234

Ieșire:

3
Cum gândim soluția:
  1. Eliminăm ultima cifră cu n // 10
  2. Ultima cifră a rezultatului este cifra zecilor: (n // 10) % 10
  3. Afișăm rezultatul cu print()
Scrie soluția în Python:
Soluție corectă:
n = int(input())

print((n // 10) % 10)

Ce învățăm: combinând // 10 cu % 10 putem obține orice cifră dintr-un număr.

EXERCIȚII PRACTICE

Exercițiul Practic: Operații cu cifrele unui număr

Sarcini de lucru

Completează următoarele sarcini pentru a-ți consolida cunoștințele despre cifrele unui număr

Sarcina 1: Afișează cifrele în ordine inversă

Cerință: Scrie un program care citește un număr n și afișează cifrele lui n în ordine inversă, folosind o buclă while cu % și //.

Soluție pentru Sarcina 1:
n = int(input())

while n > 0:
    print(n % 10)
    n = n // 10

Verifică: pentru n = 1234 se afișează 4, 3, 2, 1, fiecare pe o linie.

Sarcina 2: Adaugă o cifră la dreapta

Cerință: Scrie un program care citește un număr n și o cifră c, apoi afișează numărul obținut prin adăugarea cifrei c la dreapta lui n (folosește formula n * 10 + c).

Soluție pentru Sarcina 2:
n = int(input())
c = int(input())

n = n * 10 + c

print(n)

Verifică: pentru n = 12 și c = 7 se afișează 127.

Scrie pe caiet - De reținut

Titlul lecției

Operații cu cifrele unui număr - extragerea cifrelor și adăugarea unei cifre la stânga sau la dreapta.

Definiția lecției

În această lecție învățăm să prelucrăm cifrele unui număr natural cu două operații esențiale: % (restul împărțirii) ne dă ultima cifră, iar // (împărțirea întreagă) elimină ultima cifră. Combinându-le într-o buclă while, parcurgem toate cifrele numărului, de la ultima la prima. Apoi învățăm să construim numere noi: o cifră se adaugă la dreapta cu n = n * 10 + c, iar la stânga cu n = c * 10**p + n, unde p este numărul de cifre. Aceste operații stau la baza verificării numerelor de card și a codurilor de bare, precum și a oglinditului și a palindromului din lecțiile următoare. De exemplu, pentru a afla dacă un număr se citește la fel și inversat, primul pas este exact extragerea cifrelor sale.

Definiții esențiale

Algoritmul cheie - pseudocod

ALGORITMUL Extragerea cifrelor unui număr citește n cât timp n > 0 execută c <- n % 10 // extragem ultima cifră scrie c n <- n // 10 // eliminăm ultima cifră sfârșit cât timp

Algoritmul cheie - cod Python

n = int(input())

while n > 0:
    c = n % 10
    print(c, end=" ")
    n = n // 10

Greșeli comune de evitat

Sfaturi practice și trucuri

Exemplu practic

Extragem cifrele anului 2025 pentru a vedea cum „se desface" un număr în cifrele sale componente:

n = 2025
while n > 0:
    print(n % 10, end=" ")
    n = n // 10

Programul afișează 5 2 0 2 - cifrele lui 2025, de la ultima la prima.