Python
Tema 2 · Funcions i mòduls
Introducció
Les funcions permeten reutilitzar codi i fer-lo més llegible. Un mòdul és un fitxer que conté funcions i variables que es poden importar des d'altres scripts. Python inclou una gran biblioteca estàndard (math, os, sys...) i la possibilitat de crear els teus propis mòduls.
Objectius
- Definir funcions amb
def, paràmetres i valors de retorn - Importar mòduls de la biblioteca estàndard (
import,from ... import) - Crear el teu propi mòdul amb funcions reutilitzables
- Fer un conversor complet d'unitats mèdiques
Funcions bàsiques
Una funció simple per calcular la dosi d'un medicament:
def calcular_dosi(pes_kg, dosi_per_kg):
"""Retorna la dosi total en mg."""
return pes_kg * dosi_per_kg
# Exemple d'ús
pacient = 70 # kg
dosi_recomanada = 5 # mg/kg/dia
total = calcular_dosi(pacient, dosi_recomanada)
print(f"Dosi total: {total} mg/dia")
Funció amb paràmetres per defecte i validació:
def ajustar_dosi(dosi, funcio_renal=100):
"""
Ajusta la dosi segons la funció renal (%).
Si és < 60%, es redueix la dosi proporcionalment.
"""
if funcio_renal < 60:
factor = funcio_renal / 100
return dosi * factor
return dosi
print(ajustar_dosi(500, 80)) # 500 (funció normal)
print(ajustar_dosi(500, 45)) # 225 (reduïda)
Mòduls: importació i creació
Importar funcions del mòdul math per a càlculs farmacocinètics:
import math
def semivida_a_constante(t_half):
"""Converteix la semivida (hores) a constant d'eliminació."""
return math.log(2) / t_half
t12 = 4.5 # hores
k = semivida_a_constante(t12)
print(f"Constant d'eliminació: {k:.4f} h⁻¹")
Crear el teu propi mòdul conversor.py i utilitzar-lo des d'un altre script:
# Fitxer: conversor.py
def mg_a_g(mg):
return mg / 1000
def g_a_mg(g):
return g * 1000
def celsius_a_fahrenheit(c):
return (c * 9/5) + 32
# Fitxer: principal.py
from conversor import mg_a_g, celsius_a_fahrenheit
print(mg_a_g(500)) # 0.5
print(celsius_a_fahrenheit(37)) # 98.6
Desa conversor.py al mateix directori que principal.py
Exercicis
- Defineix una funció
imc(pes, alcada)que retorni l'índex de massa corporal i la classificació (baix pes, normal, sobrepès...). - Crea un mòdul
farmacologia.pyamb funcions per calcular la depuració de creatinina (Cockcroft-Gault) i importa'l en un altre script. - Utilitza
from math import pi, sqrtper calcular l'àrea d'una cèl·lula esfèrica a partir del seu diàmetre.
Mini Projecte – Conversor d'unitats farmacològiques
Construeix un programa amb les característiques següents:
- Crea un mòdul
unitats.pyamb funcions per convertir: mg ↔ g, mL ↔ L, mmHg ↔ atm, °C ↔ °F. - Des d'un script principal, mostra un menú que pregunti a l'usuari quina conversió vol fer.
- Utilitza funcions amb paràmetres i retorn, evitant codi repetitiu.
- Per a cada conversió, demana el valor i mostra el resultat amb 2 decimals.
- Inclou una opció per calcular la dosi d'un medicament (mg/kg) a partir del pes del pacient.
Organitza el codi en almenys dos fitxers: unitats.py i menu.py.