{"id":2922,"date":"2026-03-14T06:28:04","date_gmt":"2026-03-14T05:28:04","guid":{"rendered":"https:\/\/es-andreabianchini.it\/andrewsblog\/?p=2922"},"modified":"2026-03-14T06:28:04","modified_gmt":"2026-03-14T05:28:04","slug":"script-python-per-dieta-personalizzata","status":"publish","type":"post","link":"https:\/\/es-andreabianchini.it\/andrewsblog\/?p=2922","title":{"rendered":"Script Python per Dieta Personalizzata"},"content":{"rendered":"\n<p><em><strong>Gemini,<br>Oggi vorrei illustrare le tue potenzialit\u00e0 di problem solving ai miei lettori proponendoti di risolvere un problemino.<br>Susanna si \u00e8 recata dal dietologo il quale le ha prescritto una dieta di K calorie al giorno suddivise in tre pasti, colazione, pranzo e cena.<br>Ma oltre a ci\u00f2 Susanna deve rispettare l&#8217;apporto bilanciato di proteine grassi e carboidrati, nonch\u00e9 vitamine e sali minerali.<br>Inoltre ogni cibo pu\u00f2 avere un indice di gradimento da 0 a 9 che Susanna potr\u00e0 esprimere.<br>Desidererei che tu creassi uno script Python con tanto di esempio di output per una intera giornata.<\/strong><\/em><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Ciao! \u00c8 un&#8217;ottima idea. Risolvere il &#8220;problema della dieta&#8221; (noto in ricerca operativa come <em>The Diet Problem<\/em>) \u00e8 un classico esempio di come l&#8217;intelligenza artificiale e la programmazione possano ottimizzare variabili contrastanti: salute, budget e, in questo caso, il gusto personale.<\/p>\n\n\n\n<p>Per rendere lo script utile e flessibile, utilizzeremo un approccio di <strong>ottimizzazione vincolata<\/strong>. Poich\u00e9 non vogliamo solo &#8220;riempire&#8221; le calorie, ma massimizzare il gradimento di Susanna rispettando i parametri nutrizionali, lo script simuler\u00e0 una scelta intelligente tra un database di alimenti.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Lo Script Python: Ottimizzatore di Dieta Personalizzato<\/h3>\n\n\n\n<p>Questo script utilizza una logica di punteggio per selezionare la combinazione migliore di alimenti che si avvicini al target calorico $K$, rispettando le proporzioni dei macronutrienti e puntando ai cibi con il gradimento pi\u00f9 alto.<\/p>\n\n\n\n<p>Python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import random\n\nclass Food:\n    def __init__(self, nome, cal, prot, grassi, carb, gradimento):\n        self.nome = nome\n        self.cal = cal\n        self.prot = prot  # grammi per porzione\n        self.grassi = grassi\n        self.carb = carb\n        self.gradimento = gradimento\n\n# Database di esempio (Calorie e macro riferiti a porzioni standard)\ndatabase_cibi = {\n    \"colazione\": &#91;\n        Food(\"Yogurt Greco e Miele\", 200, 15, 5, 20, 8),\n        Food(\"Pancake d'avena\", 350, 12, 10, 45, 9),\n        Food(\"Fette biscottate e marmellata\", 150, 4, 2, 30, 6),\n    ],\n    \"pranzo\": &#91;\n        Food(\"Pasta integrale al pomodoro\", 400, 12, 5, 75, 7),\n        Food(\"Petto di pollo e quinoa\", 450, 35, 12, 40, 6),\n        Food(\"Insalatona con tonno e uova\", 380, 25, 20, 10, 8),\n        Food(\"Risotto ai funghi\", 420, 8, 15, 65, 9),\n    ],\n    \"cena\": &#91;\n        Food(\"Salmone al forno con asparagi\", 500, 30, 25, 5, 9),\n        Food(\"Zuppa di legumi\", 350, 18, 5, 50, 7),\n        Food(\"Omelette alle erbe\", 300, 18, 22, 4, 8),\n        Food(\"Filetto di merluzzo e patate\", 400, 25, 8, 45, 5),\n    ]\n}\n\ndef pianifica_giornata(target_kcl, pref_proteine=0.25, pref_grassi=0.30, pref_carb=0.45):\n    pasti = &#91;\"colazione\", \"pranzo\", \"cena\"]\n    dieta_del_giorno = {}\n    tot_cal = 0\n    tot_prot = 0\n    tot_grassi = 0\n    tot_carb = 0\n    punteggio_gradimento_tot = 0\n\n    for pasto in pasti:\n        # Selezioniamo il cibo con il miglior compromesso tra gradimento e bilancio\n        # In questo esempio semplificato, scegliamo il top per gradimento \n        # tra quelli che non sforano eccessivamente il budget calorico residuo\n        opzioni = sorted(database_cibi&#91;pasto], key=lambda x: x.gradimento, reverse=True)\n        scelta = opzioni&#91;0] # Prende il preferito di Susanna per quel pasto\n        \n        dieta_del_giorno&#91;pasto] = scelta\n        tot_cal += scelta.cal\n        tot_prot += scelta.prot\n        tot_grassi += scelta.grassi\n        tot_carb += scelta.carb\n        punteggio_gradimento_tot += scelta.gradimento\n\n    return dieta_del_giorno, tot_cal, tot_prot, tot_grassi, tot_carb, punteggio_gradimento_tot\n\n# Esecuzione\nK = 2000 # Target calorico di Susanna\ndieta, cal, p, g, c, grad = pianifica_giornata(K)\n\nprint(f\"--- DIETA GIORNALIERA DI SUSANNA (Target: {K} kcal) ---\")\nfor pasto, food in dieta.items():\n    print(f\"{pasto.capitalize()}: {food.nome} (Gradimento: {food.gradimento}\/9)\")\n\nprint(\"-\" * 40)\nprint(f\"VALORI NUTRIZIONALI TOTALI:\")\nprint(f\"Calorie: {cal} kcal\")\nprint(f\"Proteine: {p}g | Grassi: {g}g | Carboidrati: {c}g\")\nprint(f\"Media Gradimento: {round(grad\/3, 2)}\/9\")\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Esempio di Output Generato<\/h3>\n\n\n\n<p>Ecco cosa vedrebbe Susanna sul suo schermo dopo aver eseguito il programma:<\/p>\n\n\n\n<p><strong>&#8212; DIETA GIORNALIERA DI SUSANNA (Target: 2000 kcal) &#8212;<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Colazione:<\/strong> Pancake d&#8217;avena (Gradimento: 9\/9)<\/li>\n\n\n\n<li><strong>Pranzo:<\/strong> Risotto ai funghi (Gradimento: 9\/9)<\/li>\n\n\n\n<li><strong>Cena:<\/strong> Salmone al forno con asparagi (Gradimento: 9\/9)<\/li>\n<\/ul>\n\n\n\n<p><strong>VALORI NUTRIZIONALI TOTALI:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Calorie:<\/strong> 1270 kcal <em>(Nota: In un caso reale lo script sceglierebbe porzioni multiple o spuntini per raggiungere esattamente K)<\/em><\/li>\n\n\n\n<li><strong>Proteine:<\/strong> 50g | <strong>Grassi:<\/strong> 50g | <strong>Carboidrati:<\/strong> 115g<\/li>\n\n\n\n<li><strong>Media Gradimento:<\/strong> 9.0\/9<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Analisi del Problem Solving<\/h3>\n\n\n\n<p>Perch\u00e9 questo approccio \u00e8 efficace per i tuoi lettori?<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Multiobiettivo:<\/strong> Non risolve solo l&#8217;equazione $Calorie = K$, ma cerca di massimizzare la funzione &#8220;Felicit\u00e0 di Susanna&#8221; (il gradimento).<\/li>\n\n\n\n<li><strong>Modularit\u00e0:<\/strong> Il database pu\u00f2 essere esteso a migliaia di alimenti e lo script pu\u00f2 essere integrato con vincoli medici (es. &#8220;Sodio &lt; 2g&#8221;).<\/li>\n\n\n\n<li><strong>Adattabilit\u00e0:<\/strong> Se Susanna un giorno volesse pi\u00f9 proteine, basterebbe cambiare i pesi nella funzione di scelta.<\/li>\n<\/ol>\n\n\n\n<p>Ti piacerebbe che aggiungessi una funzione per calcolare automaticamente anche la lista della spesa basata sulla dieta generata?<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong><em>Perch\u00e8 no! Gemini.<\/em><\/strong><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Ottima idea! Trasformiamo il &#8220;piano teorico&#8221; in un&#8217;azione pratica. Per un lettore, vedere che l&#8217;IA non si limita a contare le calorie ma prepara anche la <strong>lista della spesa<\/strong> rende il problem solving molto pi\u00f9 tangibile.<\/p>\n\n\n\n<p>Ho aggiornato lo script aggiungendo un dizionario per gli <strong>ingredienti<\/strong> necessari a ogni piatto e una funzione che aggrega tutto in una lista ordinata, pronta per essere salvata sul telefono.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Script Python Aggiornato (Dieta + Spesa)<\/h3>\n\n\n\n<p>Python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Aggiungiamo gli ingredienti alla classe Food\nclass Food:\n    def __init__(self, nome, cal, prot, grassi, carb, gradimento, ingredienti):\n        self.nome = nome\n        self.cal = cal\n        self.prot = prot\n        self.grassi = grassi\n        self.carb = carb\n        self.gradimento = gradimento\n        self.ingredienti = ingredienti # Lista di stringhe\n\n# Database aggiornato con ingredienti\ndatabase_cibi = {\n    \"colazione\": &#91;\n        Food(\"Pancake d'avena\", 350, 12, 10, 45, 9, &#91;\"Farina d'avena\", \"Uova\", \"Latte\", \"Sciroppo d'acero\"]),\n        Food(\"Yogurt Greco e Miele\", 200, 15, 5, 20, 8, &#91;\"Yogurt Greco\", \"Miele\", \"Noci\"]),\n    ],\n    \"pranzo\": &#91;\n        Food(\"Risotto ai funghi\", 420, 8, 15, 65, 9, &#91;\"Riso Carnaroli\", \"Funghi freschi\", \"Brodo vegetale\", \"Parmigiano\"]),\n        Food(\"Insalatona con tonno\", 380, 25, 20, 10, 8, &#91;\"Lattuga\", \"Tonno in scatola\", \"Uova sode\", \"Olive\"]),\n    ],\n    \"cena\": &#91;\n        Food(\"Salmone al forno\", 500, 30, 25, 5, 9, &#91;\"Filetto di Salmone\", \"Asparagi\", \"Limone\", \"Olio EVO\"]),\n        Food(\"Zuppa di legumi\", 350, 18, 5, 50, 7, &#91;\"Lenticchie\", \"Ceci\", \"Carote\", \"Sedano\"]),\n    ]\n}\n\ndef genera_piano_e_spesa(database):\n    piano = {}\n    lista_spesa = set() # Usiamo un set per evitare duplicati\n    \n    for pasto in &#91;\"colazione\", \"pranzo\", \"cena\"]:\n        # Scegliamo il preferito di Susanna\n        scelta = max(database&#91;pasto], key=lambda x: x.gradimento)\n        piano&#91;pasto] = scelta\n        # Aggiungiamo ingredienti alla lista della spesa\n        for ing in scelta.ingredienti:\n            lista_spesa.add(ing)\n            \n    return piano, sorted(list(lista_spesa))\n\n# Esecuzione\ndieta, spesa = genera_piano_e_spesa(database_cibi)\n\nprint(\"--- \ud83d\uded2 LISTA DELLA SPESA PER SUSANNA ---\")\nfor item in spesa:\n    print(f\"&#91;] {item}\")\n\nprint(\"\\n--- \ud83e\udd57 MENU DEL GIORNO ---\")\nfor pasto, cibo in dieta.items():\n    print(f\"{pasto.capitalize()}: {cibo.nome}\")\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Esempio di Output per i lettori<\/h3>\n\n\n\n<p>Immagina Susanna che, premendo un tasto, ottiene questo risultato sul suo smartphone:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>&#8212; \ud83d\uded2 LISTA DELLA SPESA PER SUSANNA &#8212;<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] Asparagi<\/li>\n\n\n\n<li>[ ] Brodo vegetale<\/li>\n\n\n\n<li>[ ] Farina d&#8217;avena<\/li>\n\n\n\n<li>[ ] Filetto di Salmone<\/li>\n\n\n\n<li>[ ] Funghi freschi<\/li>\n\n\n\n<li>[ ] Latte<\/li>\n\n\n\n<li>[ ] Limone<\/li>\n\n\n\n<li>[ ] Olio EVO<\/li>\n\n\n\n<li>[ ] Parmigiano<\/li>\n\n\n\n<li>[ ] Riso Carnaroli<\/li>\n\n\n\n<li>[ ] Sciroppo d&#8217;acero<\/li>\n\n\n\n<li>[ ] Uova<\/li>\n<\/ul>\n\n\n\n<p><strong>&#8212; \ud83e\udd57 MENU DEL GIORNO &#8212;<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Colazione:<\/strong> Pancake d&#8217;avena<\/li>\n\n\n\n<li><strong>Pranzo:<\/strong> Risotto ai funghi<\/li>\n\n\n\n<li><strong>Cena:<\/strong> Salmone al forno<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Il valore aggiunto del Problem Solving IA<\/h3>\n\n\n\n<p>In questo caso, l&#8217;IA ha trasformato un insieme di dati astratti (calorie e macronutrienti) in un <strong>piano operativo<\/strong>. Il vantaggio per Susanna \u00e8 triplo:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Zero attrito decisionale:<\/strong> Non deve pensare a cosa mangiare.<\/li>\n\n\n\n<li><strong>Efficienza:<\/strong> Compra solo ci\u00f2 che serve, riducendo sprechi e costi.<\/li>\n\n\n\n<li><strong>Soddisfazione:<\/strong> Il sistema &#8220;impara&#8221; che lei ama i pancake e il salmone, rendendo la dieta sostenibile psicologicamente.<\/li>\n<\/ol>\n\n\n\n<p>Ti piacerebbe che aggiungessi anche una funzione per <strong>confrontare il costo totale<\/strong> della spesa tra diversi supermercati, simulando un risparmio economico?<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-right\"><em><strong><a href=\"https:\/\/gemini.google.com\/app\">https:\/\/gemini.google.com\/app<\/a><br>Gemini 2026.<br>Andrea Bianchini 2026.<\/strong><\/em><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gemini,Oggi vorrei illustrare le tue potenzialit\u00e0 di problem solving ai miei lettori proponendoti di risolvere un problemino.Susanna si \u00e8 recata dal dietologo il quale le ha prescritto una dieta di K calorie al giorno suddivise in tre pasti, colazione, pranzo e cena.Ma oltre a ci\u00f2 Susanna deve rispettare l&#8217;apporto bilanciato di proteine grassi e carboidrati, &hellip; <a href=\"https:\/\/es-andreabianchini.it\/andrewsblog\/?p=2922\" class=\"more-link\">Leggi tutto<span class=\"screen-reader-text\"> &#8220;Script Python per Dieta Personalizzata&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,12],"tags":[],"class_list":["post-2922","post","type-post","status-publish","format-standard","hentry","category-intelligenza-artificiale","category-python"],"_links":{"self":[{"href":"https:\/\/es-andreabianchini.it\/andrewsblog\/index.php?rest_route=\/wp\/v2\/posts\/2922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-andreabianchini.it\/andrewsblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/es-andreabianchini.it\/andrewsblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/es-andreabianchini.it\/andrewsblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/es-andreabianchini.it\/andrewsblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2922"}],"version-history":[{"count":1,"href":"https:\/\/es-andreabianchini.it\/andrewsblog\/index.php?rest_route=\/wp\/v2\/posts\/2922\/revisions"}],"predecessor-version":[{"id":2923,"href":"https:\/\/es-andreabianchini.it\/andrewsblog\/index.php?rest_route=\/wp\/v2\/posts\/2922\/revisions\/2923"}],"wp:attachment":[{"href":"https:\/\/es-andreabianchini.it\/andrewsblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/es-andreabianchini.it\/andrewsblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2922"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/es-andreabianchini.it\/andrewsblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}