Răspunsuri

Unitatea 1. Principii de elaborare a unui program. Fundamente ale elaborării algoritmilor

Pagina 9, Exercițiul 1 — Provocarea variabilelor

Numele de variabile greșite (care trebuie bifate) sunt: b (conține operatorul +), d (începe cu o cifră) și f (conține spațiu).

Numele corecte sunt: a, c și e.

 

Pagina 11, Exercițiul 1 — Evaluarea expresiei

Răspuns corect: 15. (Expresia extrage și adună ultimele trei cifre ale numărului.)

 

Pagina 11, Exercițiul 2 — Valoarea expresiei

Expresia are valoarea True (adevărat).

Justificare: (5≤7)=True and (7<8)=True dă True, iar True or (8%2=1)=False rămâne True.

 

Pagina 14, Tabelul 5 — Probleme rezolvate. Schimb

Valorile lui a și b se interschimbă. Pentru valorile inițiale a=3, b=7 se obține la final a=7, b=3.

 

Pagina 14, Exercițiul 1 — Analiza algoritmului

Algoritmul interschimbă valorile prin sumă și diferență. Valorile finale: a = 23, b = 7.

 

Pagina 15, Exercițiul 1 — Indentare și evaluare

Pentru a=3, b=5, c=7, structura alternativă imbricată dă x = 3. (dacă a-[b/2]<0: 3-2=1, fals; altfel dacă a+b-[c/2]<b: 3+5-3=5<5 fals; altfel dacă a%b+c>b: 3+7=10>5 adevărat → x←3.)

 

Pagina 15, Exercițiul 2 — Execuția corectă a unui algoritm

O valoare inițială posibilă pentru x astfel încât y să fie 2 la final este x = 5. (Pentru x=5: x>3 adevărat, x<7 adevărat, x%2=0 fals → y←2.)

 

Pagina 18, Exercițiul 1 — Probleme rezolvate. Secvență

Simulator pas cu pas care numără de câte ori un termen se divide cu termenul anterior. Pentru datele citite n=6, a=4 și secvența 8, 7, 21, 3, 6, rezultatul final este nr = 1 (doar 8 este divizibil cu 4; restul comparațiilor — 7 cu 8, 21 cu 7, 3 cu 21, 6 cu 3 — nu adaugă la număr conform trace-ului din cod).

 

Pagina 18, Exercițiul 3 — Probleme rezolvate. Factorial

Simulator pas cu pas al calculului factorialului (f←1; pentru i←1,n: f←f*i). Rezultatul este n!. Pentru valoarea implicită n=6 se obține 6! = 720.

 

Pagina 18, Exercițiul 5 — Probleme rezolvate. Putere

Simulator pas cu pas al calculului puterii (p←1; pentru i←1,n: p←p*x).

Rezultatul este x^n. Pentru valorile implicite n=5, x=2 se obține 2^5 = 32.

 

Pagina 20, Exercițiul 1 — Analiza și optimizarea unui algoritm

Algoritm: i←a, x←0; cât timp i<=b: x←x+i, i←i+1; scrie x (adică suma numerelor de la a la b).

a. Pentru a=1, b=10 valoarea afișată este 55.

b. Perechi (a b) care dau x=22: „4 7" (4+5+6+7=22) sau „-3 7" (−3+…+7=22).

 

Pagina 20, Exercițiul 2 — Analiza algoritmului

Valoarea inițială corectă a lui x este 5. (Algoritm: d←2; cât timp d<50: x←x*d, d←d*d; scrie x. Se execută pentru d=2, 4, 16 → x se înmulțește succesiv cu 2, 4 și 16, adică ×128; 5×128 = 640.)

 

Pagina 21, Exercițiul 1 — Variabile

Răspuns corect: f. Singurul nume de variabilă corect este Clasa_9A. Sunt greșite: 10x (începe cu cifră), 2B||!2B (conține operatori), Nr elevi (conține spațiu), Șoim (conține diacritice/caracter neacceptat) și 'x' (conține apostrofuri).

 

Pagina 21, Exercițiul 2 — Expresii logice

Expresiile corecte sunt: b și c. Sunt greșite: „x = 0 and x = 1" (imposibil simultan) și „not (x ≠ 0 or x ≠ 1)".

 

Pagina 21, Exercițiul 5 — Structură alternativă

Se afișează valoarea 2. (Pentru a=7, b=11: a%2=1 adevărat → b>a adevărat → b+a%2=11+1=12, deci condiția „=1" este falsă → se execută ramura altfel „scrie 2".)

 

Pagina 21, Exercițiul 6 — Structuri de control

1. Afirmații corecte: a, b, d.

2. Pentru n=12 se afișează 8.

3. Cel mai mic și cel mai mare număr pentru care se afișează 16: 16 și 31 (algoritmul afișează cea mai mare putere a lui 2 din intervalul [1, n]).

Unitatea 2. Principii de elaborare a unui program. Elemente de bază ale limbajului Python

Pagina 31, Exercițiul 1 — Selectarea expresiilor corecte

Răspunsul corect este varianta c: (a * b - 2) / (5 * b) – 7 / 2.

Parantezele la numitor (5 * b) sunt obligatorii, altfel Python ar împărți la 5 și apoi ar înmulți cu b (operatori cu prioritate egală, evaluați stânga→dreapta).

 

Pagina 31, Exercițiul 2 — Extragerea cifrei din mijloc

Expresia corectă este n // 100 % 10 (echivalent: n % 1000 // 100).

Elimină ultimele două cifre prin // 100, apoi izolează cifra unităților prin % 10 — adică a treia cifră (cea din mijloc).

 

Pagina 31, Exercițiul 3 — Verificarea unui divizor comun

Expresia corectă: x % d == 0 and y % d == 0 (echivalente acceptate: not(x%d) and not(y%d), sau x%d == y%d == 0). Ambele resturi trebuie să fie 0, legate prin operatorul and.

 

Pagina 31, Exercițiul 4 — Condiții de împărțire egală a sumei

Singura variantă corectă este: b.

Echivalează S % 2 == 0 and S // 2 >= P (suma pară ȘI jumătatea ≥ P). Varianta „S % 2 == 0 AND S // 2 >= P" este greșită doar pentru că AND e scris cu majuscule (Python cere and).

 

Pagina 31, Exercițiul 5 — Inserarea unei cifre într-un număr

Singura expresie corectă este: a. (Pentru x = 234 dă 2374)

 

Pagina 31, Exercițiul 6 — Expresii logice și intervale

Varianta corectă este: a, pentru că un număr este în afara reuniunii dacă x <= -10, sau -2 <= x < 50, sau x > 100. Celelalte variante folosesc greșit semnele la margini (x <= 50 sau x >= 100 includ eronat 50, respectiv 100; x < -10 exclude eronat -10).

 

Pagina 40, Exercițiul 1 — Tipuri de date

Asocierile corecte:

numărul de pagini ale unei cărți → <class 'int'>;

dacă un utilizator este logat sau nu → <class 'bool'>;

un mesaj de eroare → <class 'str'>;

prețul unui produs → <class 'float'>.

 

Pagina 40, Exercițiul 2 — Structura repetitivă

Variantele corecte (bucle) sunt: b și c.

Nu sunt corecte: a (instrucțiune de control, nu buclă) și d (instrucțiune condițională).

 

Pagina 40, Exercițiul 3 — Structura alternativă

Valorile posibile sunt 7 și 8 (numerele naturale cu nota >= 7 și nota < 9).

La 9 sau mai mult s-ar afișa „Excelent”, iar sub 7 s-ar afișa „Bine” sau „Insuficient”.

 

Pagina 40, Exercițiul 4 — Determinarea rezultatului afișat

Se afișează: 1 2 4 8 16 32 64 128 (primele 8 puteri ale lui 2, pe o singură linie separate prin spațiu).

 

Pagina 40, Exercițiul 5 — Determinarea valorii inițiale

n trebuie să aibă inițial valoarea 6. Bucla while n > 2 se execută pentru n = 6, 5, 4, 3 (4 iterații), fiecare afișând „##”, adică 4 × 2 = 8 caractere #.

Unitatea 3. Prelucrări ale datelor numerice

Pagina 41, Exercițiul 1 — Suma cifrelor

Simulator pas cu pas al algoritmului care calculează suma cifrelor unui număr natural n (s = 0; while n > 0: s += n % 10; n //= 10).

Nu are un răspuns unic — depinde de valoarea introdusă. Exemplu (valoarea implicită n = 375): suma cifrelor = 3 + 7 + 5 = 15, deci se afișează „Suma cifrelor este 15”.

 

Pagina 41, Exercițiul 3 — Oglinditul unui număr natural

Simulator pas cu pas al algoritmului care construiește oglinditul (răsturnatul) unui număr natural n (oglindit = 0; while n > 0: oglindit = oglindit*10 + n%10; n //= 10).

Nu are răspuns unic — depinde de valoarea introdusă. Exemplu (valoarea implicită n = 3075): oglinditul = 5703, deci se afișează „Oglinditul este 5703”.

 

Pagina 44, Exercițiul 1 — Prelucrarea cifrelor unui număr natural

Singura variantă corectă este d (izolează prima cifră prin împărțiri întregi succesive la 10).

Celelalte variante sunt greșite: a (elimină doar ultima cifră), b (dă ultima cifră, nu prima) și c (nu se termină / nu extrage prima cifră).

 

Pagina 44, Exercițiul 3 — Urmărirea execuției unui algoritm

a. Pentru n = 32425 și cifra c = 2 se afișează 305.

b. Pentru n = 322245227 și cifra c = 2 se afișează 300007.

 

Pagina 45, Exercițiul 1, Model de implementare 6 — Model de implementare. Determinarea divizorilor unui număr

Simulator pas cu pas al afișării tuturor divizorilor lui n (afișează 1, apoi fiecare d din 2..n//2 care divide n, apoi n).

Nu are răspuns unic — depinde de n. Exemplu (valoarea implicită n = 24): divizorii afișați sunt 1 2 3 4 6 8 12 24.

 

Pagina 45, Exercițiul 3 — Urmărirea execuției unui program

Simulator pas cu pas al testului de primalitate: afișează „DA” dacă n este prim, „NU” dacă nu este (tratează n < 2 → NU, n == 2 → DA, numerele pare > 2 → NU, apoi verifică divizori impari d cu d*d <= n).

Nu are răspuns unic — depinde de n. Exemplu (valoarea implicită n = 49): 49 = 7 × 7, deci se afișează „NU”.

 

Pagina 46, Exercițiul 6 — Testarea unui algoritm

Simulator pas cu pas al descompunerii lui n în factori primi, afișând fiecare factor prim d și exponentul p (perechi „d p”).

Nu are răspuns unic — depinde de n. Exemplu (valoarea implicită n = 2500): 2500 = 2^2 · 5^4, deci se afișează perechile „2 2” și „5 4”.

 

Pagina 47, Exercițiul 11 — Analiza unui program pentru valori date

Simulator al algoritmului lui Euclid pentru cmmdc. Pentru valorile implicite n = 121 și m = 4950, rezultatul afișat este: cmmdc = 11.

 

Pagina 49, Exercițiul 1 — Prelucrarea divizorilor numerelor naturale

Răspuns corect: variantele b și d.

Varianta b (d=2; while x%d!=0: d=d+1; print(x//d)) găsește cel mai mic divizor prim și afișează x împărțit la el.

Varianta d (d=x//2; while x%d!=0: d=d-1; print(d)) caută descendent primul divizor.

 

Pagina 50, Exercițiul 2 — Ce afișează programul?

Programul afișează cel mai mare factor prim al numărului citit.

a. Pentru numărul 720 se afișează 5 (720 = 2^4 × 3^2 × 5, deci factorul prim maxim este 5).

b. Trei valori distincte pentru care programul afișează chiar numărul citit sunt orice trei numere prime distincte > 1, de exemplu 2, 3, 5 (sau 7, 11, 13 etc.) — la un număr prim, factorul prim maxim este numărul însuși.

 

Pagina 50, Exercițiul 3 — Analiza unui algoritm

Programul afișează toți divizorii comuni ai lui a și b mai mari decât 1.

a. Pentru a=70 și b=308 se afișează divizorii comuni: 2, 7 și 14.

b. Pentru a=363 (=3×11^2), astfel încât să se afișeze 11 și 121, b trebuie să fie multiplu de 121 dar NU multiplu de 3; trei exemple distincte: 121, 242, 484 (toate multipli de 121 și nedivizibili cu 3).

 

Pagina 51, Exercițiul 1 — Citește codul, găsește răspunsul!

Răspuns corect: b („divizorii lui 25”, adică 1 5 25).

La executarea secvenței (n=25; for i in range(1,n+1): if n%i==0: print(i, end=' ')) se afișează divizorii lui 25.

 

Pagina 51, Exercițiul 2 — Secvența corectă

Răspuns corect: variantele b și d.

Varianta b (while n%10==0: n//=10) și varianta d (while n>0: if n%10==0: n//=10 else: break) elimină corect zerourile finale.

Variantele a și c sunt greșite (a - intră în buclă infinită / e incorectă, c - are condiția greșită).

 

Pagina 51, Exercițiul 3 — Găsește numărul ascuns

Cel mai mare număr de două cifre pentru care, după împărțirile succesive la 2, 3 și 5, rezultatul devine 1 este 96 (96 = 2^5 × 3), deci conține doar factorii primi 2 și 3.

Răspuns: 96.

Unitatea 4. Subprograme

Pagina 57, Exercițiul 1 — Adevărat sau fals? Funcții Python

Afirmațiile adevărate sunt: a, b, e, f și g.

 

Pagina 57, Exercițiul 2 — Funcții simple în Python

Se scrie o funcție cu un parametru care returnează pătratul acestuia. Exemplu corect:

def patrat(x):

    return x * x

Sunt acceptate și variantele return x ** 2 sau return pow(x, 2), cu orice nume valid de funcție și de parametru.

 

Pagina 57, Exercițiul 3 — Analiza funcțiilor

Funcțiile corecte sunt c și d.

Varianta c (if n%2==0: return n-2, n; else return n-3, n-1) și varianta d (buclă while care crește b cu 2 cât timp b+2<=n, apoi return b-2, b) returnează corect cele mai mari două numere pare mai mici sau egale cu n.

Varianta b este greșită (instrucțiuni return consecutive inaccesibile), iar varianta a returnează valori greșite / poate da eroare.

 

Pagina 58, Exercițiul 4 — Selectarea funcțiilor corecte

Funcțiile corecte sunt a și d.

Varianta a folosește import math și formula grade * math.pi / 180, iar varianta d folosește from math import pi și grade * pi / 180.

Varianta b este greșită (formula inversată: grade*180/math.pi), iar varianta c folosește pi fără import (dă eroare).

 

Pagina 59, Exercițiul 1 — Avantajele subprogramelor

Răspunsuri corecte: a, b și e.

Afirmațiile greșite sunt: c, d și f (formulările cu „întotdeauna”/„complet” sunt false).

 

Pagina 59, Exercițiul 2 — Apelul corect al unei funcții

Răspunsuri corecte: a și b.

Variantele c (ultima_cifra(x, c) – două argumente) și d (ultima_cifra() – niciun argument) sunt greșite pentru că nu respectă numărul de parametri (unul singur).

 

Pagina 59, Exercițiul 3 — Urmărirea execuției unei funcții

Răspuns corect: c.

Numerele întregi se transmit prin valoare (fiind imutabile): în funcție n devine 10+13=23 și se afișează 23, dar variabila globală n rămâne 10, deci print(n) afișează 10.

 

Pagina 59, Exercițiul 4 — Adevărat sau fals? Variabile locale

Răspuns corect: „Fals”.

Afirmația este falsă, pentru că o variabilă locală este vizibilă doar în interiorul funcției în care a fost definită.

 

Pagina 59, Exercițiul 5 — Valori potrivite

Trebuie două numere distincte de trei cifre (100–999) care să fie pătrate perfecte (pentru care r*r == x). Exemplu de răspuns corect: 121 (=11²) și 144 (=12²). Alte variante valide: 100, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961 — orice două distincte dintre acestea.

 

Pagina 59, Exercițiul 6 — Secvență de instrucțiuni

Răspuns corect: „6.0 6 7 6”. round(6.5, 0) → 6.0 (rotunjire bancară la par, tip float), math.floor(6.5) → 6, math.ceil(6.5) → 7, int(6.5) → 6 (trunchiere).

Unitatea 5. Fișiere text

Pagina 64, Exercițiul 1 — Corectitudinea unui program

Răspuns corect: b.

Fișierul este deschis cu modul "r" (citire), iar apelul write() va genera o eroare (io.UnsupportedOperation).

 

Pagina 64, Exercițiul 2 — Analiza unui program

Răspuns corect: c. Metoda write() acceptă doar șiruri de caractere; transmiterea numărului întreg 25 produce o eroare de tip TypeError.

 

Pagina 64, Exercițiul 3 — Analiza unei secvențe de cod

Răspuns corect: b. Parcurgerea obiectului fișier cu bucla for citește nativ linie cu linie, iar end="" evită liniile goale suplimentare.

 

Pagina 64, Exercițiul 4 — Ce face modul "w" în Python?

Răspuns corect: c. Modul "w" trunchiază fișierul existent (șterge conținutul vechi). Pentru păstrarea datelor și adăugare la final se folosește modul "a".

 

Pagina 65, Exercițiul 1 — De ce folosim fișiere text?

Răspuns corect: c (persistența datelor).

 

Pagina 65, Exercițiul 2 — Evitarea erorilor TypeError

În spațiul liber se scrie „str”, adică f.write(str(13)). Funcția str() convertește numărul întreg 13 în șirul "13", deoarece write() nu acceptă direct numere întregi.

 

Pagina 65, Exercițiul 3 — Rolul utilizării instrucțiunii with

Răspuns corect: a.

 

Pagina 65, Exercițiul 4 — Filtrarea numerelor din fișiere

Blank 1 (modul de deschidere): "w". Blank 2 (conversia liniei): int(linie) — se acceptă și int(linie.strip()) sau int(linie.split()[0]). Blank 3 (scrierea valorii pare urmată de spațiu): fout.write(str(nr) + " ") — se acceptă și fout.write(f'{nr} '), sau print(nr, end=" ", file=fout) / print(str(nr), end=" ", file=fout) (ordinea argumentelor end și file poate fi inversată).

 

Pagina 65, Exercițiul 5 — Numărarea valorilor din fișiere

Blank 1 (deschidere fișier): open("incasari.txt", "r") — se acceptă și open("incasari.txt"). Blank 2 (divizarea șirului): linie.split() — se acceptă și linie.split(" "). Blank 3 (conversia la întreg): int(incasare).

Unitatea 6. Fundamentele structurilor de date liniare

Pagina 67, Exercițiul 1 — Succesorul și predecesorul lui 3

Din lista [2, 4, 3, 6, 5, 9, 12, 14, 17], după ștergerea numerelor pare rămâne [3, 5, 9, 17]. Predecesorul lui 3: nu există (3 este primul element) — se completează cu „-” (sau „nu exista” / „nu are”). Succesorul lui 3: „5”.

 

Pagina 67, Exercițiul 2 — Configurația finală a listei

Configurația finală a listei este [15, 7201, 20, 1003, 12, 5, 8, 7]. Regula: numerele cu cel puțin două cifre se pun la începutul listei, cele cu o singură cifră la final, iar duplicatele se ignoră. Urmărire: 5→[5]; 12→[12,5]; 1003→[1003,12,5]; 20→[20,1003,12,5]; 1003 duplicat, ignorat; 7201→[7201,20,1003,12,5]; 8→[7201,20,1003,12,5,8]; 15→[15,7201,20,1003,12,5,8]; 8 duplicat, ignorat; 7→[15,7201,20,1003,12,5,8,7].

 

Pagina 67, Exercițiul 3 — Ordinea inversă

Pornind de la lista [20, 40, 60, 80], scopul este să se obțină [80, 60, 40, 20] folosind operațiile Del(poz) (șterge elementul de pe poziția poz) și Ad(x, poz) (inserează valoarea x pe poziția poz). O soluție validă (indexare de la 1): Del(4); Ad(80,1); Del(4); Ad(60,2); Del(4); Ad(40,3) → lista devine [80,60,40,20]. O altă soluție (ștergere completă și readăugare, indexare de la 1): Del(1); Del(1); Del(1); Del(1); Ad(80,1); Ad(60,2); Ad(40,3); Ad(20,4). Orice succesiune care aduce lista la [80, 60, 40, 20] este acceptată (funcționează cu indexare de la 0 sau de la 1).

 

Pagina 69, Operatorii relaționali pentru compararea listelor — Comparație element cu element

Demonstrație interactivă (fără verificare a răspunsului elevului). Rezultatele exemplelor: [1, "2", 3] < [1, 2, 3] → apare TypeError (la poziția 1 nu se pot compara str "2" și int 2); [1, "2", 3] == [1, 2, 3] → False; [1, 2] < [1, 2, 5] → True (lista mai scurtă, prefix, este mai mică); [1, 4, 9] > [1, 3, 10] → True (prima diferență, 4 > 3, decide). Principiu: listele se compară element cu element de la stânga la dreapta, prima pereche de elemente diferite stabilind rezultatul.

 

Pagina 74, Exercițiul 1 — Spații lacunare

Se completează astfel: condiția if este numere[0] == numere[1] (verifică dacă primele două elemente sunt egale); indexul modificat este [1] (al doilea element); valoarea atribuită este 2*numere[0] (sau numere[0]*2, dublul primului element). Cod complet: if numere[0] == numere[1]: numere[1] = 2*numere[0].

 

Pagina 74, Exercițiul 2 — Operatorul *

Răspuns corect: [1, 2] * 4 (sau echivalent 4 * [1, 2]). Se acceptă și forma cu atribuire, de exemplu lista = [1, 2] * 4. Aceasta produce lista [1, 2, 1, 2, 1, 2, 1, 2].

 

Pagina 74, Exercițiul 3 — Numărarea aparițiilor

Răspuns corect: count. Metoda count() returnează numărul de apariții ale unei valori într-o listă. (index caută poziția, len dă lungimea totală, pop șterge un element.)

 

Pagina 74, Exercițiul 4 — Rularea unei secvențe de cod

Răspuns corect: [10, 16, 15, 20, 15, 25]. numere.index(15) returnează 1 (prima apariție a lui 15), iar numere.insert(1, 16) inserează 16 pe poziția 1, deplasând restul elementelor.

 

Pagina 74, Exercițiul 5 — Excepția

Răspuns corect: b.

Răspuns corect: secvența numere = [5, 10, 15]; numere.remove(20); print(numere). Metoda remove(20) caută valoarea 20, care nu există în listă și generează o excepție ValueError. (insert cu index mai mare decât lungimea listei nu dă eroare, ci adaugă la final.)

 

Pagina 74, Exercițiul 6 — Instrucțiunea FOR

Se completează astfel: variabila de ciclare (ex: x), colecția numere, iar în print argumentul x, end='#'. Cod complet: for x in numere: print(x, end='#'). Variantă alternativă acceptată: parcurgere prin indici — for i in range(len(numere)): print(numere[i], end='#'). Ghilimelele pot fi simple sau duble.

 

Pagina 74, Exercițiul 7 — Adevărat sau fals?

1) „Instrucțiunea for poate fi folosită pentru a parcurge elementele unei liste.” → Adevărat.

2) „Parcurgerea unei liste se poate face doar folosind indici.” → Fals (se poate parcurge și direct prin elemente: for x in lista).

3) „Parcurgerea unei liste nu poate fi realizată cu ajutorul instrucțiunii while.” → Fals (se poate folosi un contor de index cu while).

4) „Media aritmetică a elementelor unei liste poate fi calculată cu o singură parcurgere a listei.” → Adevărat.

 

Pagina 76, Generarea unei liste pe baza unor expresii matematice. Antrenament progresiv — Antrenament progresiv

Simulator pas cu pas. Funcția alergare(n,x,y,z) construiește lista caloriilor pe zile: dist = x + i*y, calorii = dist*z. Pentru valorile implicite n=4, x=2, y=3, z=1 rezultă calorii = [2, 5, 8, 11]. Apoi se însumează caloriile de la ultima zi spre început până se atinge pragul k=16: 11 (ziua 4) + 8 (ziua 3) = 19 ≥ 16.

Rezultat afișat: numărul minim de zile = 2, iar caloriile consumate în aceste zile sunt 8 și 11.

 

Pagina 77, Exercițiul 1 — Secvență de instrucțiuni

Răspuns corect: d. Prima buclă generează [10, 20, 30, 40, 50]; a doua buclă (i de la 1 la 4) face lista[i] -= lista[i-1] cumulativ: lista[1]=20-10=10, lista[2]=30-10=20, lista[3]=40-20=20, lista[4]=50-20=30.

 

Pagina 77, Exercițiul 2 — Determinarea rezultatului unei secvențe Python

Se afișează [2, 6, 12, 42, 56, 72]. Lista inițială este [0, 2, 6, 12, 20, 30, 42, 56, 72, 90] (i*i+i), iar bucla while elimină toate numerele divizibile cu 10 (0, 20, 30, 90), rămânând 2, 6, 12, 42, 56, 72.

 

Pagina 77, Exercițiul 3 — Completarea unei secvențe Python pentru generarea unei liste

Se completează cu expresia i * 20 + 7 (echivalent: 20*i+7 / 7+i*20 / 7+20*i). Pentru i de la 0 la 9 generează [7, 27, 47, 67, 87, 107, 127, 147, 167, 187].

 

Pagina 79, Exercițiul 1 — Execuția unui algoritm pas cu pas

Simulator vizual al sortării prin selecția minimului; nu are răspuns de grilă. La final lista introdusă este ordonată crescător. Pentru lista implicită 23, 78, 45, 18, 32, 56, 64, 27, 51 rezultatul sortat este [18, 23, 27, 32, 45, 51, 56, 64, 78].

 

Pagina 80, Exercițiul 4 — Algoritm de sortare pentru un șir de cifre

Simulator vizual al sortării prin numărare (listă de frecvențe), pentru valori între 0 și 9; nu are răspuns de grilă. Se numără aparițiile fiecărei valori în vectorul nr, apoi se reconstruiește lista sortată. Pentru lista implicită 2, 5, 6, 2, 3, 8, 8, 4 rezultatul sortat este [2, 2, 3, 4, 5, 6, 8, 8].

 

Pagina 80, Exercițiul 1 — Numărul de comparații

Răspuns corect: b.

Pentru o listă cu N=6 elemente, sortarea prin selecția minimului face 5+4+3+2+1 = 15 comparații (formula N*(N-1)/2 = 6*5/2 = 15).

 

Pagina 80, Exercițiul 2 — Sortare pe baza listei de frecvențe

Răspunsuri corecte: a și c. Sunt cazuri cu interval mic și bine definit de valori.

Variante greșite: b și d (interval de valori uriaș).

 

Pagina 80, Exercițiul 3 — Prelucrarea cifrelor unui număr

a) Pentru x=20341 se afișează 14302 (programul afișează cifrele în ordine inversă, adică oglinditul numărului).

b) Orice număr palindrom (egal cu oglinditul său), de exemplu 121, 55, 404, sau un număr de o singură cifră – pentru acesta șirul afișat este identic cu cel citit.

 

Pagina 83, Exercițiul 1 — Metoda append() în Python

Răspuns corect: c.

Pentru L=[1,3,7], L.append(7) mărește lista cu un element pe ultima poziție, rezultând [1, 3, 7, 7] (listele Python acceptă valori duplicate, nu apare eroare).

 

Pagina 83, Exercițiul 2 — Ce valoare se afișează?

Răspuns corect: d.

Bucla parcurge lista L = [2, 4, 6, 8, 7, 12, 13] și adună doar elementele divizibile cu 4 (x % 4 == 0): 4 + 8 + 12 = 24. Se va afișa valoarea 24.

 

Pagina 83, Exercițiul 3 — Analiza unei liste de frecvențe

Răspuns corect: b.

Lista nr = [2, 0, 1, 3, 0, 2] este un vector de frecvență, deci lista ordonată reconstruită este L = [0, 0, 2, 3, 3, 3, 5, 5]. Elementul de pe poziția 5 (indexare de la 0) este 3.

 

Pagina 83, Exercițiul 4 — Determinarea rezultatului unui program

Răspuns corect: [7, 5, 2, 9, 3, 1].

Programul extrage cifrele numărului 715329 de la coadă spre început; la iterațiile impare inserează cu insert(i, cifra), iar la cele pare cu insert(0, cifra), rezultând lista finală [7, 5, 2, 9, 3, 1].