Variabile și tipuri
Stocăm valori precum temperaturi, texte și liste, apoi le folosim în calcule.
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.
Lecția este gândită ca un traseu scurt: vezi ideea, citești codul, testezi, apoi legi totul de o problemă de concurs.
Stocăm valori precum temperaturi, texte și liste, apoi le folosim în calcule.
Transformăm o regulă matematică într-o funcție reutilizabilă și ușor de testat.
Pregătim pasul spre Pandas: o coloană de intrare, o coloană de rezultate.
Problema este mică, dar conține obiceiuri importante: nume clare, formulă corectă, rotunjire și verificarea rezultatului.
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")
Elevul poate modifica valoarea și vedea imediat rezultatul. Este o punte bună între formula matematică și codul Python.
În Python, același calcul se scrie: c * 9 / 5 + 32
Ce valoare produce funcția pentru celsius_to_fahrenheit(0)?
După lecție, elevul are deja toate piesele pentru prima problemă: citire, listă, transformare, rotunjire și afișare.
Construim un script care primește temperaturi în Celsius și returnează valorile corespunzătoare în Fahrenheit, rotunjite la două zecimale.
O soluție bună nu înseamnă doar cod care merge. Înseamnă să știm ce citim, ce transformăm și ce afișăm.
În varianta simplă lucrăm cu o listă. În varianta cu fișier, citim valorile dintr-un CSV.
Pentru fiecare valoare C, calculăm C * 9 / 5 + 32.
Folosim round(..., 2), apoi afișăm sau scriem rezultatele într-un tabel.
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()
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)
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ă.
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 |
| 2 | 64.72 |
| 3 | 29.95 |
| 4 | 50.92 |
| 5 | 94.01 |
| 6 | 22.93 |
| 7 | 40.32 |
| 8 | 77.59 |
| 9 | 20.71 |
| 10 | 4.32 |
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.
Primele rânduri au și răspunsul corect, util pentru verificarea formulei.
| SampleID | temperature_c | temperature_f |
|---|---|---|
| 1 | 2.47 | 36.45 |
| 2 | 37.04 | 98.67 |
| 3 | 23.92 | 75.06 |
| 4 | 15.92 | 60.66 |
| 5 | -10.64 | 12.85 |
Aceste valori se convertesc pentru a construi `submission.csv`.
| SampleID | temperature_c |
|---|---|
| 1 | -18.11 |
| 2 | 18.18 |
| 3 | -1.14 |
| 4 | 10.51 |
| 5 | 34.45 |
Aceeași rețetă poate fi repetată pentru fiecare temă din programa CEXIA.
Variabile, condiții, bucle, funcții, fișiere CSV.
Tabele, filtrări, agregări, curățarea datelor.
Grafice clare și interpretarea lor pentru decizii.
Train/test, normalizare, evaluare și soluții explicate.