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
IDEI DE PROIECTE
PAG. 1 / 1
Vizualizarea unei molecule de benzen
Acasă >>> Lecții online, limbajul Python 3

Introducere

Poate ați mai văzut simulări 3D cu molecule, dar e cu totul altceva când le faceți chiar voi. Cu Python, atomii nu mai sunt doar niște desene din manual, ci devin obiecte care se mișcă, se leagă între ele și pot fi observate din orice unghi, direct pe ecranul vostru.

Folosind module speciale ca Pygame, putem crea simulări 3D simple, dar fascinante, unde moleculele se rotesc, se mișcă și devin vizibile. Este ca și cum ați transforma lecția de chimie într-un mic laborator virtual, unde experimentul nu se oprește niciodată. Veți vedea legăturile chimice între atomi, cum aranjează aceștia în spațiu și cum forma lor influențează proprietățile substanței.

Dar partea și mai cool este că Python oferă și alte module specializate pentru chimie, precum RDKit sau OpenBabel. Acestea vă permit să generați molecule, să le analizați proprietățile și chiar să le optimizați structura, totul direct pe calculator. Practic, nu doar că învățați chimie, dar vă și antrenați mintea de programator. Experimentele devin interactive: schimbați parametri, rotiți moleculele, vedeți efectele în timp real și înțelegeți mai bine teoria.

Astfel, în loc să învățați pasiv, luați controlul și deveniți exploratori. Lecția devine un joc, un laborator și un puzzle de programare, totodată. Când combinăm programarea cu chimia, nu doar că înțelegem lumea mai bine, dar descoperim și cât de distractiv și creativ poate fi să înveți cu propriile mâini… sau mai bine zis, cu propriul cod.

Să trecem la treabă!

Presupunem că dorim să vizualizăm unele molecule rotindu-se pe ecran. Nu trebuie să fii expert în programare sau chimie organică, ci doar să ai curiozitate și să urmezi câțiva pași simpli. Primul lucru este să ai Python instalat pe calculator și să adaugi modulul Pygame (deschideți terminalul CMD.exe din Windows și introduceți linia de mai jos):

pip install pygame

Obs. Vezi mai multe detalii despre instalarea modulelor [aici].

Pygame este un modul care ne permite să creăm ferestre grafice, să desenăm forme, să animăm obiecte și să gestionăm interacțiunea cu utilizatorul, transformând codul în experiențe vizuale și interactive.

Să luăm ca exemplu molecula de benzen (C6H6), o structură cu șase atomi de carbon care formează un hexagon și câte un atom de hidrogen atașat fiecărui carbon. Poate părea abstractă în manual, dar cu Python și Pygame ea prinde contur și se mișcă chiar pe ecranul vostru. Codul pe care îl folosim creează o reprezentare tridimensională simplificată a benzenului, unde atomii sunt vizualizați ca mici cercuri, legăturile între ei ca linii, și întreaga moleculă se rotește pentru a putea fi observată din toate unghiurile.



Folosind trigonometrie și câteva formule matematice, fiecare atom primește poziții precise în planul spațial, iar rotația continuă ne dă senzația că molecula dansează, invitându-te să urmărești cum se leagă atomii și cum forma hexagonală se menține constant. Culoarea și dimensiunea atomilor diferă între carbon și hidrogen, astfel încât să fie ușor de distins vizual, iar mișcarea rotativă adaugă un element dinamic, captivant.

Beneficiul acestei abordări este enorm: în loc să înveți pasiv structura benzenului, o vezi, o experimentezi și înțelegi mai bine geometria moleculară. Mai mult, combinația între chimie și programare dezvoltă atât gândirea logică, cât și intuiția științifică, încurajând elevii să exploreze și să creeze propriile molecule, să modifice viteza rotației, să schimbe culorile sau să adauge mai mulți atomi și legături.

O parte foarte interesantă a acestei activități este că nu trebuie să scrieți tot codul de la zero. Puteți folosi ChatGPT pentru a genera rapid un exemplu de cod care afișează molecula de benzen și care face rotația ei pe ecran. Apoi, magia începe când începeți să „descompuneți” codul pas cu pas, adică să faceți reverse engineering: urmăriți fiecare linie, observați cum se calculează pozițiile atomilor, cum se trasează legăturile și cum funcționează rotația 3D simplificată. Eu am generat codul de mai jos:

import pygame
import math

pygame.init()
W, H = 700, 500
screen = pygame.display.set_mode((W, H))
clock = pygame.time.Clock()

R_C = 60
R_H = 95

atoms = []
for i in range(6):
    a = i * math.pi / 3
    cx = R_C * math.cos(a)
    cy = R_C * math.sin(a)
    atoms.append(("C", cx, cy, 0))

    hx = R_H * math.cos(a)
    hy = R_H * math.sin(a)
    atoms.append(("H", hx, hy, 0))

bonds = []
for i in range(6):
    bonds.append((2*i, (2*(i+1)) % 12))
    bonds.append((2*i, 2*i+1))

angle = 0
running = True
while running:
    for e in pygame.event.get():
        if e.type == pygame.QUIT:
            running = False

    angle += 0.01
    screen.fill((40, 40, 40))

    projected = []
    for t, x, y, z in atoms:
        cos_a = math.cos(angle)
        sin_a = math.sin(angle)

        xz = x * cos_a - z * sin_a
        zz = x * sin_a + z * cos_a

        scale = 400 / (400 + zz)
        sx = int(xz * scale + W//2)
        sy = int(y * scale + H//2)

        if t == "C":
            projected.append((sx, sy, int(10*scale), (30, 30, 30)))
        else:
            projected.append((sx, sy, int(6*scale), (230, 230, 230)))

    for a, b in bonds:
        pygame.draw.line(screen, (80, 80, 80),
            projected[a][:2], projected[b][:2], 4)

    for x, y, r, c in projected:
        pygame.draw.circle(screen, c, (x, y), r)

    pygame.display.flip()
    clock.tick(60)

pygame.quit()


Poți descarca fișierul: 📄 benzen.py

Codul de mai sus creează o fereastră în care fiecare atom este reprezentat printr-un cerc, iar legăturile dintre atomi prin linii. Fiecare atom are coordonatele sale și, folosind trigonometrie, putem simula rotația în spațiu, ceea ce ajută la înțelegerea pozițiilor relative și a geometriei moleculei. Să analizăm puțin codul în cele ce urmează.

Primul pas este inițializarea Pygame cu pygame.init(), care pornește toate modulele necesare pentru fereastra grafică și gestionarea evenimentelor. Vom crea apoi fereastra cu pygame.display.set_mode() și un ceas cu pygame.time.Clock() care ne permite să controlăm cât de repede se actualizează animația.

Lista atoms stochează atomii moleculei și pozițiile lor, iar lista bonds stochează legăturile dintre aceștia. Vom vedea că schimbând valorile din aceste liste putem modifica complet structura moleculei, iar aceasta este exact partea la care aplicăm reverse engineering: studiind codul linie cu linie, înțelegem cum fiecare coordonată și fiecare legătură afectează imaginea finală.

În bucla principală while running:, codul verifică evenimentele, ca de exemplu închiderea ferestrei, și actualizează unghiul rotației moleculei. Apoi calculează coordonatele fiecărui atom pentru a simula rotația în spațiu, aplicând trigonometrie simplă și scalare pentru a crea efectul de 3D. Vom folosi pygame.draw.line() pentru legături și pygame.draw.circle() pentru a desena atomii, iar pygame.display.flip() va actualiza ecranul pentru a vedea animația în timp real. clock.tick(60) ne asigură că totul se mișcă fluid, cu 60 de cadre pe secundă.

De fapt, ideea este foarte simplă: la fiecare iterație a buclei principale, unghiul de rotație se modifică foarte puțin, cu o sutime, iar imaginea este redesenată complet, ceea ce creează senzația de mișcare continuă și transformă desenul static într-o animație fluidă.

Rezultatul la rularea programului este foarte interesantă:

IDEI DE EXTINDERE A PROIECTULUI
Putem îmbunătăți codul în mai multe direcții interesante, fără să-l complicăm inutil și păstrându-l prietenos și educativ:

  1. În primul rând, putem face simularea mai interactivă, permițând controlul rotației cu tastatura sau mouse-ul, astfel încât să puteți opri, accelera sau schimba direcția de rotație a moleculei și să o analizați din unghiurile dorite. În felul acesta, nu mai sunteți doar spectatori, ci chiar controlați experimentul.
  2. O altă îmbunătățire firească este legată de realism. Putem adăuga mai multe axe de rotație, astfel încât molecula să nu se rotească doar într-un singur plan, ci să dea impresia unui spațiu tridimensional mai real. De asemenea, putem rafina reprezentarea legăturilor chimice, desenând legături duble sau schimbând grosimea și culoarea lor pentru a sugera tipuri diferite de legături.
  3. Putem îmbunătăți codul și prin personalizare vizuală, astfel încât fiecare dintre voi să-și pună „amprenta” pe simulare. Culorile atomilor pot fi schimbate ușor pentru a respecta convențiile din chimie sau pur și simplu pentru a face molecula mai clară și mai atractivă vizual. Putem adăuga fundaluri diferite, evidențierea atomului selectat sau chiar schimbarea culorii legăturilor în funcție de tipul lor. Această personalizare nu este doar estetică, ci ajută și la înțelegerea structurii moleculei, pentru că ochiul distinge mai ușor elementele atunci când ele sunt bine contrastate și adaptate stilului vostru.
Sugestie. Copiați codul și folosiți ChatGPT sau Gemini pentru a propune, pe rând, îmbunătățirile discutate. Analizați fiecare modificare, cereți clarificări și ajustați soluțiile acolo unde considerați că este nevoie. Nu uitați că inteligența artificială este o unealtă care ne poate ajuta să dezvoltăm aplicații mai rapid și mai eficient, dar responsabilitatea rămâne a noastră. Rolul vostru este să puneți întrebările potrivite, să verificați rezultatele și să „interogați” mașina folosind gândirea critică.

Upgrade. Spre exemplu, eu am modificat programul a.î. legăturile dintre dintre atomii de carbon să fie duble alternante (respectăm structura Kekulé a benzenului). Ideea este simplă: pentru fiecare legătură C–C desenăm două linii paralele, ușor decalate. Descarcă și rulează codul meu actualizat de aici: 📄 benzen_2.py

Concluzii

Prin acest proiect ați văzut că programarea nu este doar despre cod, ci despre înțelegere, explorare și creativitate. Am folosit Python pentru a vizualiza o moleculă reală, am combinat chimia cu matematica și grafica și am transformat o lecție teoretică într-o experiență interactivă. Important nu este doar rezultatul final, ci drumul parcurs: faptul că ați analizat codul, ați făcut modificări și ați observat efectele. Această abordare vă ajută să gândiți logic, să puneți întrebări și să învățați activ. Dacă veți continua să experimentați, să personalizați și să construiți propriile simulări, veți descoperi că știința și programarea pot deveni instrumente puternice prin care să înțelegeți mai bine lumea din jurul vostru.

Un element important al acestui mod de lucru este folosirea inteligentă a unor instrumente moderne, precum ChatGPT. Acesta nu înlocuiește învățarea, ci o accelerează, oferindu-vă exemple, idei și puncte de plecare. Adevărata învățare începe atunci când luați codul generat și îl analizați, îl modificați și încercați să înțelegeți de ce funcționează. Prin reverse engineering, adică prin „desfacerea” codului în bucăți logice, vă dezvoltați gândirea critică și capacitatea de a pune întrebări corecte. Acest mod de învățare este diferit de cel clasic, pentru că nu memorați, ci experimentați, testați și observați rezultate reale. În felul acesta, Python, chimia și inteligența artificială devin instrumente care lucrează împreună, iar voi învățați nu doar conținut, ci și cum să învățați mai eficient într-o lume digitală.

Bibliografie

OpenBabel și RDKit sunt biblioteci puternice pentru chimie computațională care ne permit să generăm și să manipulăm molecule, să calculăm proprietăți chimice și să explorăm structuri complexe, toate direct din Python, transformând codul într-un laborator virtual în care putem testa idei și vizualiza rezultate. Studiați suplimentar documentația utilizând link-urile de mai sus. Spor la studiu!

Noțiuni teoretice: variabile, funcții, pygame, import de module, ChatGPT, Gemini, reverse engineering

Cuvinte cheie: Python, chimie, programare, elevi, învățare interactivă, interdisciplinar, benzen

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