Clasa IX-XII | Fundamente de programare

Bazele Python pentru AI

O lecție ghidată pentru elevii care vor să înțeleagă cum transformă Python datele brute în răspunsuri clare. Pornim de la variabile, liste și formule, apoi ajungem la prima problemă explicată pas cu pas.

Ilustrație cu elevi care învață Python și analiza datelor pe laptop

Ce învățăm astăzi

Lecția este gândită ca un traseu scurt: vezi ideea, citești codul, testezi, apoi legi totul de o problemă de concurs.

Variabile și tipuri

Stocăm valori precum temperaturi, texte și liste, apoi le folosim în calcule.

Funcții simple

Transformăm o regulă matematică într-o funcție reutilizabilă și ușor de testat.

Date în tabel

Pregătim pasul spre Pandas: o coloană de intrare, o coloană de rezultate.

Laborator: Celsius în Fahrenheit

Problema este mică, dar conține obiceiuri importante: nume clare, formulă corectă, rotunjire și verificarea rezultatului.

Intuiția

  • 1Primim o temperatură în grade Celsius.
  • 2Aplicăm formula de conversie.
  • 3Afișăm rezultatul rotunjit la două zecimale.
F = C x 9 / 5 + 32

Cod de testat

def celsius_to_fahrenheit(celsius):
    fahrenheit = celsius * 9 / 5 + 32
    return round(fahrenheit, 2)

temperaturi = [0, 20, 36.6, 100]

for temp in temperaturi:
    print(temp, "C ->", celsius_to_fahrenheit(temp), "F")
Observă că funcția nu afișează direct. Ea returnează o valoare, iar afișarea se face separat. Așa codul rămâne mai ușor de refolosit.

Testează și verifică

Elevul poate modifica valoarea și vedea imediat rezultatul. Este o punte bună între formula matematică și codul Python.

20 C = 68 F

În Python, același calcul se scrie: c * 9 / 5 + 32

Mini-întrebare

Ce valoare produce funcția pentru celsius_to_fahrenheit(0)?

Legătura cu problema ONIA

După lecție, elevul are deja toate piesele pentru prima problemă: citire, listă, transformare, rotunjire și afișare.

Intro Python: Transformarea temperaturilor din Celsius în Fahrenheit

Construim un script care primește temperaturi în Celsius și returnează valorile corespunzătoare în Fahrenheit, rotunjite la două zecimale.

Python liste funcții CSV Easy
Deschide problema

Soluția explicată

O soluție bună nu înseamnă doar cod care merge. Înseamnă să știm ce citim, ce transformăm și ce afișăm.

Pasul 1

Citim temperaturile

În varianta simplă lucrăm cu o listă. În varianta cu fișier, citim valorile dintr-un CSV.

Pasul 2

Aplicăm formula

Pentru fiecare valoare C, calculăm C * 9 / 5 + 32.

Pasul 3

Rotunjim și salvăm

Folosim round(..., 2), apoi afișăm sau scriem rezultatele într-un tabel.

Soluție completă, fără biblioteci externe

import csv

def celsius_to_fahrenheit(celsius):
    return round(celsius * 9 / 5 + 32, 2)

def validate_on_train():
    correct = 0
    total = 0

    with open("train.csv", "r", encoding="utf-8") as fin:
        reader = csv.DictReader(fin)

        for row in reader:
            celsius = float(row["temperature_c"])
            expected = float(row["temperature_f"])
            predicted = celsius_to_fahrenheit(celsius)

            if f"{predicted:.2f}" == f"{expected:.2f}":
                correct += 1
            total += 1

    print(f"Train: {correct}/{total} corecte")

def build_submission():
    rows = []

    with open("test.csv", "r", encoding="utf-8") as fin:
        reader = csv.DictReader(fin)

        for row in reader:
            celsius = float(row["temperature_c"])
            rows.append({
                "SampleID": row["SampleID"],
                "temperature_f": f"{celsius_to_fahrenheit(celsius):.2f}"
            })

    with open("submission.csv", "w", encoding="utf-8", newline="") as fout:
        writer = csv.DictWriter(fout, fieldnames=["SampleID", "temperature_f"])
        writer.writeheader()
        writer.writerows(rows)

validate_on_train()
build_submission()
Folosim `train.csv` ca să verificăm formula, apoi folosim `test.csv` ca să construim fișierul de submisie. Pe platformă încărcăm doar `submission.csv`.

Variantă scurtă cu Pandas

import pandas as pd

df = pd.read_csv("temperaturi.csv")
df["fahrenheit"] = (df["celsius"] * 9 / 5 + 32).round(2)
df.to_csv("rezultat.csv", index=False)
Pandas este util când datele vin în tabel. Formula se aplică pe toată coloana, nu pe fiecare element separat.

Output și fișiere de descărcat

Pentru fiecare problemă vom afișa pe pagină datele de intrare, forma finală a submisiei și fișierele necesare: `train.csv`, `test.csv`, `submission.csv` și codul sursă.

Preview `submission.csv`

Formatul cerut de problemă: coloanele `SampleID` și `temperature_f`. Mai jos sunt primele 10 rânduri din fișierul complet.

SampleID temperature_f
1-0.60
264.72
329.95
450.92
594.01
622.93
740.32
877.59
920.71
104.32
Descarcă train.csv Descarcă test.csv Descarcă submission.csv Descarcă soluția Python

Fișierul descărcat conține toate cele 50 de predicții calculate din `test.csv`. Acesta este fișierul care trebuie încărcat ca submisie.

Preview `train.csv`

Primele rânduri au și răspunsul corect, util pentru verificarea formulei.

SampleID temperature_c temperature_f
12.4736.45
237.0498.67
323.9275.06
415.9260.66
5-10.6412.85

Preview `test.csv`

Aceste valori se convertesc pentru a construi `submission.csv`.

SampleID temperature_c
1-18.11
218.18
3-1.14
410.51
534.45

Cum continuăm seria

Aceeași rețetă poate fi repetată pentru fiecare temă din programa CEXIA.

Python

Variabile, condiții, bucle, funcții, fișiere CSV.

Pandas

Tabele, filtrări, agregări, curățarea datelor.

Vizualizare

Grafice clare și interpretarea lor pentru decizii.

Modele ML

Train/test, normalizare, evaluare și soluții explicate.