<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Python - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Impara a programmare gratuitamente! Tutorial di programmazione su Python, JavaScript, Linux e molto altro. ]]>
        </description>
        <link>https://www.freecodecamp.org/italian/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Python - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/italian/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 16 May 2026 19:16:16 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/italian/news/tag/python/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Come ottenere informazioni sulla posizione di un indirizzo IP usando Python ]]>
                </title>
                <description>
                    <![CDATA[ A volte può essere utile conoscere la posizione di un indirizzo IP, sia che si tratti del tuo, sia di quello di un sito web che stai utilizzando. Un possibile caso d'uso è quando vuoi inviare informazioni di accesso agli utenti del tuo sito. In questo articolo vedremo come puoi ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/come-ottenere-informazioni-sulla-posizione-di-un-indirizzo-ip-usando-python/</link>
                <guid isPermaLink="false">67f6439574db42043d7dc621</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Emilio Taranto ]]>
                </dc:creator>
                <pubDate>Thu, 24 Apr 2025 13:22:35 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2025/04/location-ip.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/how-to-get-location-information-of-ip-address-using-python/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Get Location Information of an IP Address Using Python</a>
      </p><p>A volte può essere utile conoscere la posizione di un indirizzo IP, sia che si tratti del tuo, sia di quello di un sito web che stai utilizzando.</p><p>Un possibile caso d'uso è quando vuoi inviare informazioni di accesso agli utenti del tuo sito.</p><p>In questo articolo vedremo come puoi ottenere la posizione di un indirizzo IP utilizzando Python.</p><h1 id="prepara-gli-strumenti"><strong><strong>Prepara gli strumenti</strong></strong></h1><p>Per raggiungere questo obiettivo, useremo due API:</p><ol><li><a href="https://www.ipify.org/"><strong><strong>ipify</strong></strong></a>: questa API ci aiuterà a conoscere l'indirizzo IP da cui proviene la richiesta.</li><li><a href="https://ipapi.co/"><strong><strong>ipapi</strong></strong></a>: questa API ci fornirà informazioni sulla posizione di un determinato indirizzo IP.</li></ol><p>Per interagire con queste API useremo la libreria &nbsp;<code>requests</code> di Python. Se non hai familiarità con le API, assicurati di consultare <a href="https://www.freecodecamp.org/italian/news/cose-un-api-in-italiano-per-favore/">questo articolo</a> per saperne di più.</p><p>Puoi installare questa libreria usando il comando <code>pip</code> in questo modo:</p><pre><code class="language-bash">$ pip install requests
</code></pre><p>Una volta installata la libreria, siamo pronti a partire!</p><h1 id="ottenere-informazioni-sulla-posizione"><strong>Ottenere informazioni sulla posizione</strong></h1><p>Come discusso, per prima cosa otterremo il nostro indirizzo IP tramite la prima API. Poi utilizzeremo questo indirizzo IP per ricavare informazioni geografiche tramite la seconda API. Avremo quindi due funzioni:</p><pre><code class="language-py">import requests


def get_ip():
    response = requests.get('https://api64.ipify.org?format=json').json()
    return response["ip"]


def get_location():
    ip_address = get_ip()
    response = requests.get(f'https://ipapi.co/{ip_address}/json/').json()
    location_data = {
        "ip": ip_address,
        "city": response.get("city"),
        "region": response.get("region"),
        "country": response.get("country_name")
    }
    return location_data


print(get_location())
</code></pre><p>Nel codice qui sopra, abbiamo due funzioni – <code>get_ip()</code> e <code>get_location()</code>. Vediamole separatamente.</p><h3 id="funzione-get_ip-"><strong>Funzione <strong><code>get_ip()</code></strong></strong></h3><p>Secondo la <a href="https://www.ipify.org/">documentazione dell'API ipify</a>, dobbiamo effettuare una richiesta <strong><strong>GET</strong></strong> a <a href="https://api.ipify.org/?format=json"><code>https://api.ipify.org?format=json</code></a> per ottenere una risposta JSON simile a questa:</p><pre><code class="language-json">{
  "ip": "117.214.109.137"
}
</code></pre><p>Salviamo questa risposta in una variabile <code>response</code> che è un dizionario Python contenente una sola coppia chiave-valore. Quindi restituiamo il valore della chiave <code>ip</code> usando <code>response["ip"]</code>.</p><h3 id="funzione-get_location-"><strong>Funzione <strong><code>get_location()</code></strong></strong></h3><p>Secondo la <a href="https://ipapi.co/api/#introduction">documentazione di ipapi</a>, dobbiamo effettuare una richiesta <strong><strong>GET</strong></strong> a <a href="https://ipapi.co/%7Bip%7D/%7Bformat%7D/"><code>https://ipapi.co/{ip}/{format}/</code></a> per ottenere le informazioni sulla posizione per un particolare indirizzo IP. <code>{ip}</code> viene sostituito dall'indirizzo IP e <code>{format}</code> può essere sostituito con uno dei seguenti formati: <code>json</code>, <code>jsonp</code>, <code>xml</code>, <code>csv</code>, <code>yaml</code>.</p><p>Questa funzione chiama internamente la funzione <code>get_ip()</code> per ottenere l'indirizzo IP e poi effettua una richiesta <strong><strong>GET</strong></strong> all'URL con l'indirizzo IP. Questa API restituisce una risposta JSON simile a questa:</p><pre><code class="language-json">{
    "ip": "117.214.109.137",
    "version": "IPv4",
    "city": "Gaya",
    "region": "Bihar",
    "region_code": "BR",
    "country": "IN",
    "country_name": "India",
    "country_code": "IN",
    "country_code_iso3": "IND",
    "country_capital": "New Delhi",
    "country_tld": ".in",
    "continent_code": "AS",
    "in_eu": false,
    "postal": "823002",
    "latitude": 24.7935,
    "longitude": 85.012,
    "timezone": "Asia/Kolkata",
    "utc_offset": "+0530",
    "country_calling_code": "+91",
    "currency": "INR",
    "currency_name": "Rupee",
    "languages": "en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc",
    "country_area": 3287590,
    "country_population": 1352617328,
    "asn": "AS9829",
    "org": "National Internet Backbone"
}
</code></pre><p>La risposta contiene molte informazioni. Puoi scegliere quelle che ti servono. Per questo tutorial, utilizzeremo solo <code>city</code>, <code>region</code> e <code>country</code>. Per questo abbiamo creato un dizionario chiamato <code>location_data</code>, nel quale abbiamo raccolto questi dati e lo abbiamo restituito come risultato.</p><p>Infine, chiamiamo la funzione <code>get_location()</code> e stampiamo il risultato. L'output sarà simile a questo:</p><pre><code class="language-json">{
  "ip": "117.214.109.137", 
  "city": "Gaya", 
  "region": "Bihar", 
  "country": "India"
}
</code></pre><h1 id="conclusione"><strong><strong><strong><strong>Conclusion</strong></strong></strong>e</strong></h1><p>In questo articolo, abbiamo imparato come interagire con i servizi web per ottenere informazioni sulla posizione per un particolare indirizzo IP.</p><p>Grazie per aver letto questo articolo!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Gestione degli errori in Python – Spiegazione di try, except, else e finally con esempi di codice ]]>
                </title>
                <description>
                    <![CDATA[ Di recente, il mio manager mi ha incaricato di creare un report automatico. Ho progettato il report affinché fosse semplice. Includeva un po' di numeri da un database e alcune operazioni matematiche basilari. Ero entusiasta di poter finalmente mettere in mostra in azienda le mie incredibili abilità con Python. Ho ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/gestione-degli-errori-in-python-spiegazione-di-try-except-else-e-finally/</link>
                <guid isPermaLink="false">66fb06530a4dbd1c170ebaba</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Monica Jin ]]>
                </dc:creator>
                <pubDate>Fri, 04 Oct 2024 09:07:02 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2024/10/game-over-screen.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/error-handling-in-python-introduction/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Error Handling in Python – try, except, else, &amp; finally Explained with Code Examples</a>
      </p><p>Di recente, il mio manager mi ha incaricato di creare un report automatico. Ho progettato il report affinché fosse semplice. Includeva un po' di numeri da un database e alcune operazioni matematiche basilari. Ero entusiasta di poter finalmente mettere in mostra in azienda le mie <em>incredibili</em> abilità con Python.</p><p>Ho completato e consegnato il prodotto. Tutto andava alla grande. O almeno, fino a due settimane più tardi. Il mio report ha cominciato a fallire improvvisamente a causa di un errore di divisione per zero. È il momento di far partire la risata registrata.</p><p>La mia breve storia non è particolarmente dettagliata, ma dovrebbe enfatizzare l'importanza di gestire casi limite ed errori quando si scrivono programmi. Questo report sarebbe dovuto essere un'opportunità per mettere in mostra la mia competenza in Python, invece, ne è risultata una figuraccia piuttosto imbarazzante.</p><p>Perciò, prendiamoci un momento per imparare le basi della gestione degli errori utilizzando la libreria standard di Python. Metterò in evidenza alcune delle cose di cui hai bisogno per iniziare.</p><p>Prima di iniziare a gestire eccezioni, dovresti avere una buona comprensione dei fondamenti di Python. Avrai bisogno di sapere perché le eccezioni vengono generate per poterle trattare!</p><h3 id="ecco-cosa-tratteremo-"><strong>Ecco cosa tratteremo:</strong></h3><ol><li><a href="#istruzioni-try-ed-except-in-python">Istruzioni try ed except in Python</a></li><li><a href="#esecuzione-condizionale-con-la-clausola-else">Esecuzione condizionale con la clausola else</a></li><li><a href="#eccezioni-predefinite">Eccezioni predefinite</a></li><li><a href="#eccezioni-personalizzate">Eccezioni personalizzate</a></li><li><a href="#considerazioni-sulle-prestazioni">Considerazioni sulle prestazioni</a></li></ol><h2 id="istruzioni-try-ed-except-in-python"><strong>Istruzioni try ed except in Python</strong></h2><p>Le istruzioni <code>try</code> ed <code>except</code> sono i metodi principali per trattare le eccezioni. Ecco un esempio:</p><pre><code class="language-python">x = 0
try:
    print(5 / x)
except ZeroDivisionError:
    print("Qualcosa è andato storto")

# Qualcosa è andato storto
</code></pre><p>Rivediamo il codice qui sopra per essere sulla stessa lunghezza d'onda:</p><ol><li>La riga 1 assegna il valore 0 alla variabile <code>x</code></li><li>Le righe 2 e 3 aprono una clausola <code>try</code> e tentano di dividere 5 per la variabile <code>x</code></li><li>Le righe 4 e 5 aprono una clausola <code>except</code> per qualsiasi errore di divisione per zero (<code>ZeroDivisionError</code>) e istruiscono il programma a stampare un messaggio qualora si tentasse di dividere per 0</li></ol><p>Probabilmente avrai notato il problema: la variabile <code>x</code> ha valore 0, e sto cercando di dividere 5 per <code>x</code> . Neppure i migliori matematici del mondo sono in grado di dividere per 0, e nemmeno Python può farlo. Quindi, che succede?</p><p>Se non ci occupassimo dell'errore, il programma terminerebbe immediatamente, non appena cercasse di dividere 5 per <code>x</code>. Dato che i programmi non sanno cosa fare con le eccezioni senza istruzioni esplicite, abbiamo creato la clausola <code>except</code> nella riga 4 e fornito al programma i passi da seguire in caso di divisione per 0.</p><p>Questa è l'intera idea dietro la gestione delle eccezioni: occorre dire al programma cosa fare quando si verifica un errore che non può semplicemente ignorare. Vediamo come funzionano le clausole <code>try</code> ed <code>except</code>.</p><h3 id="analisi-dell-istruzione-try"><strong>Analisi dell'istruzione try</strong></h3><p>Le clausole <code>try</code> ed <code>except</code> seguono un modello che ti permette di gestire in modo affidabile i problemi nel tuo codice. Vediamo come funziona.</p><p>Il primo passo è tentare l'esecuzione del codice nella clausola <code>try</code>.</p><p>Dopodiché, abbiamo tre possibilità:</p><h4 id="nessun-errore-nella-clausola-try"><strong>Nessun errore nella clausola try</strong></h4><p>Se il codice nella clausola <code>try</code> viene eseguito <strong>senza nessun errore</strong>, il programma:</p><ol><li>Esegue la clausola <code>try</code> </li><li>Salta tutte le clausole <code>except</code></li><li>Prosegue con la sua normale esecuzione</li></ol><pre><code class="language-python">x = 1
try:
    print(5 / x)
except ZeroDivisionError:
    print("Qualcosa è andato storto")

print("Sto eseguendo dopo la clausola try!")

# 5.0
# Sto eseguendo dopo la clausola try!
</code></pre><p>In questo esempio modificato, puoi vedere che non ci sono problemi nella clausola <code>try</code> (righe 3 e 4). Il codice verrà eseguito, la clausola <code>except</code> verrà saltata e il programma riprenderà l'esecuzione dopo la terminazione delle istruzioni <code>try</code> ed <code>except</code>.</p><h4 id="errori-nella-clausola-try-e-l-eccezione-specificata"><strong>Errori nella clausola try e l'eccezione è specificata</strong></h4><p>Se il codice nella clausola <code>try</code> <strong>genera un'eccezione</strong> e <strong>il tipo di eccezione viene specificato dopo qualsiasi parola chiave con </strong><code>except</code><strong><strong> </strong></strong>, il programma:</p><ol><li>Salta il codice rimanente nella clausola <code>try</code></li><li>Esegue il codice nella clausola <code>except</code> corrispondente</li><li>Prosegue con la sua normale esecuzione</li></ol><pre><code class="language-python">x = 0
try:
    print(5 / x)
except ZeroDivisionError:
    print("Qualcosa è andato storto")

print("Sto eseguendo dopo la clausola try!")

# Qualcosa è andato storto
# Sto eseguendo dopo la clausola try!
</code></pre><p>Tornando al mio primo esempio, ho cambiato la nostra variabile <code>x</code> di nuovo al valore 0 e ho provato a dividere 5 per <code>x</code>. Ciò produce un &nbsp;errore di divisione per zero (<code>ZeroDivisionError</code>). Dato che l'istruzione <code>except</code> specifica questo tipo di eccezione, il codice in quella clausola viene eseguito prima che il programma riprenda la sua normale esecuzione.</p><h4 id="errori-nella-clausola-try-e-l-eccezione-non-specificata"><strong>Errori nella clausola Try e l'Eccezione NON è Specificata</strong></h4><p>Infine, se il programma genera un'eccezione nella clausola <code>try</code>, <strong>ma l'eccezione non viene specificata in nessuna istruzione </strong><code>except</code>, allora il programma:</p><ol><li>Interrompe l'esecuzione del programma e dà errore</li></ol><pre><code class="language-python">x = 0
try:
    print(5 / y)
except:
    print("Qualcosa è andato storto")

print("Sto eseguendo dopo la clausola try!")

# NameError: name 'y' is not defined (il nome 'y' non è definito)
</code></pre><p>Nell'esempio precedente, sto cercando di dividere 5 per la variabile <code>y</code>, che non esiste. Questo genera un errore di nome (<code>NameError</code>). Non abbiamo specificato al programma come gestire i <code>NameError</code>, perciò l'unica opzione è quella di terminare.</p><h3 id="pulizia"><strong>Pulizia</strong></h3><p><code>try</code> ed <code>except</code> sono gli strumenti principali della gestione degli errori, ma esiste anche una clausola opzionale che puoi usare, chiamata <code>finally</code>. La clausola <code>finally</code> verrà sempre eseguita, che ci sia un errore o meno.</p><pre><code class="language-python">x = 0
try:
    print(5 / x)
except ZeroDivisionError:
    print("Sono la clausola except!")
finally:
    print("Sono la clausola finally!")

print("Sto eseguendo dopo la clausola try!")

# Sono la clausola except!
# Sono la clausola finally!
# Sto eseguendo dopo la clausola try!
</code></pre><p>In questo esempio, ho creato il nostro amato <code>ZeroDivisionError</code>. Puoi vedere che l'ordine di esecuzione è:</p><ol><li>La clausola <code>except</code></li><li>La clausola <code>finally</code></li><li>Qualsiasi codice successivo</li></ol><p>Una volta che correggiamo il codice nella clausola <code>try</code> in modo che non generi più errori, vedrai comunque un ordine di esecuzione simile. Al posto della clausola <code>except</code>, verrà eseguita la clausola <code>try</code>.</p><pre><code class="language-python">x = 1
try:
    print(5 / x)
except ZeroDivisionError:
    print("Sono la clausola except!")
finally:
    print("Sono la clausola finally!")

print("Sto eseguendo dopo la clausola try!")

# 5.0
# Sono la clausola finally!
# Sto eseguendo dopo la clausola try!
</code></pre><p>Noterai che l'unica differenza è che la clausola <code>try</code> viene eseguita con successo perché non vengono generate eccezioni. La clausola <code>finally</code> e il codice successivo vengono eseguiti come previsto.</p><p>Questo è utile in alcuni casi in cui vuoi dare una "ripulita" indipendentemente dall'esito delle clausole <code>try</code> e <code>except</code>. Azioni come chiudere connessioni, chiudere file e fare logging sono ottimi candidati per la clausola <code>finally</code>.</p><h2 id="esecuzione-condizionale-con-la-clausola-else"><strong>Esecuzione condizionale con la clausola else</strong></h2><p>Un'altra clausola opzionale è la clausola <code>else</code>. La clausola <code>else</code> è semplice: se il codice nella clausola <code>try</code> viene eseguito senza generare errori, allora anche il codice nella clausola <code>else</code> verrà eseguito.</p><pre><code class="language-python">x = 1
try:
    print(5 / x)
except ZeroDivisionError:
    print("Sono la clausola except!")
else:
    print("Sono la clausola else!")
finally:
    print("Sono la clausola finally!")

print("Sto eseguendo dopo la clausola try!")

# 5.0
# Sono la clausola else!
# Sono la clausola finally!
# Sto eseguendo dopo la clausola try!
</code></pre><p>L'ordine di esecuzione per questo esempio è:</p><ol><li>La clausola <code>try</code></li><li>La clausola <code>else</code></li><li>La clausola <code>finally</code></li><li>Qualsiasi codice dopo</li></ol><p>Se dovessimo incontrare un'eccezione o un errore nella clausola <code>try</code>, la clausola <code>else</code> verrebbe ignorata.</p><pre><code class="language-python">x = 0
try:
    print(5 / x)
except ZeroDivisionError:
    print("Sono la clausola except!")
else:
    print("Sono la clausola else!")
finally:
    print("Sono la clausola finally!")

print("Sto eseguendo dopo la clausola try!")

# Sono la clausola except!
# Sono la clausola finally!
# Sto eseguendo dopo la clausola try!
</code></pre><h2 id="eccezioni-predefinite"><strong>Eccezioni predefinite</strong></h2><p>Mi hai visto scrivere a proposito di due diversi errori finora: <code>NameError</code> e <code>ZeroDivisionError</code>. Ma se avessimo bisogno di altre eccezioni?</p><p>Esiste un'intera lista di eccezioni predefinite in Python che fanno parte della libreria standard. Probabilmente coprono quasi tutte le necessità che potresti avere nella gestione di errori ed eccezioni.</p><p>Ecco solo alcune che potrebbero essere importanti:</p><ul><li><code>KeyError</code> – Una chiave non viene trovata in un dizionario</li><li><code>IndexError</code> – L'indice è fuori dai limiti stabiliti di un oggetto iterabile</li><li><code>TypeError</code> – Una funzione o un'operazione è stata usata su un tipo di oggetto sbagliato</li><li><code>OSError</code> – Errori generali del sistema operativo</li></ul><p>Ce ne sono molte altre, che puoi trovare nella documentazione di Python. Consiglio di darci un'occhiata. Non solo diventerai più bravo a gestire gli errori, ma esplorerai anche cosa può <em>effettivamente</em> andare storto nei i tuoi programmi Python.</p><h2 id="eccezioni-personalizzate"><strong>Eccezioni personalizzate</strong></h2><p>Se hai bisogno di funzionalità estese, puoi anche definire delle eccezioni personalizzate.</p><pre><code class="language-python">class ForError(Exception):
    def __init__(self, message):
        self.message = message

    def foo(self):
        print("bar")
</code></pre><p>Nell'esempio sopra, ho creato una nuova classe e l'ho estesa dalla classe Exception. Ora posso scrivere una funzionalità personalizzata e trattare questa eccezione come qualsiasi altro oggetto.</p><pre><code class="language-python">try:
    raise FooError("Questo è un errore di test")
except FooError as e:
    e.foo()

# bar
</code></pre><p>Qui ho generato di proposito il mio nuovo <code>FooError</code>. Ho catturato <code>FooError</code> e gli assegno l'alias <code>e</code>. Ora posso accedere al mio metodo <code>foo()</code> che ho costruito nella classe che ho creato.</p><p>Questo apre un mondo di possibilità quando si ha a che fare con gli errori. Log personalizzati, tracciamenti più dettagliati, o qualsiasi altra cosa di cui hai bisogno, tutto può essere codificato e creato.</p><h2 id="considerazioni-sulle-prestazioni"><strong>Considerazioni sulle prestazioni</strong></h2><p>Ora che conosci le basi di <code>try</code>, <code>except</code> e degli oggetti eccezione, puoi cominciare a considerare di usarli nel tuo codice per gestire gli errori in modo elegante. Ma ci sono impatti significativi sulle prestazioni del codice?</p><p>La risposta breve è no. Con il rilascio di Python 3.11, non c'è praticamente nessuna riduzione di velocità nell'uso delle istruzioni <code>try</code> ed <code>except</code> quando non vengono sollevate eccezioni.</p><p>La cattura degli errori ha causato effettivamente qualche rallentamento. Ma in generale, è meglio catturare questi errori piuttosto che far crashare l'intero programma.</p><p>Nelle versioni precedenti di Python, usare le clausole <code>try</code> ed <code>except</code> causava del tempo di esecuzione aggiuntivo. Tieni presente questo dettaglio se non hai la versione aggiornata.</p><h2 id="ricapitolando">Ricapitolando</h2><p>Grazie per aver letto fino a qui. Il futuro te e i tuoi futuri clienti ti ringrazieranno per la gestione degli errori.</p><p>Abbiamo esaminato le clausole <code>try</code>, <code>except</code>, <code>else</code>, e <code>finally</code>, il loro ordine di esecuzione e in quali circostanze vengono eseguite. Abbiamo anche visto le basi per creare eccezioni personalizzate.</p><p>La cosa più importante da ricordare è che le clausole <code>try</code> ed <code>except</code> sono i modi principali per gestire gli errori e dovresti usarle ogni volta che hai del codice rischioso e che potrebbe generare degli errori.</p><p>Inoltre, tieni a mente che la cattura degli errori renderà il tuo codice più resiliente e ti farà sembrare un programmatore decisamente migliore.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ La Funzione Enumerate di Python – Esempio di Enumerazione dell'Indice di un Ciclo in Python ]]>
                </title>
                <description>
                    <![CDATA[ Quando stai programmando in Python, puoi utilizzare la funzione enumerate() e un ciclo for per visualizzare ciascun valore di un iterabile con una variabile contatore.  In questo articolo, ti mostrerò come usare la funzione enumerate() di Python con un ciclo for e ti spiegherò perché è una funzione migliore ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/la-funzione-enumerate-di-python-esempio-di-enumerazione-dellindice-di-un-ciclo-in-python/</link>
                <guid isPermaLink="false">669534307faf37044ec58a6f</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Andrea Sisti ]]>
                </dc:creator>
                <pubDate>Wed, 24 Jul 2024 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2024/07/tine-ivanic-u2d0BPZFXOY-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/python-enumerate-python-enum-for-loop-index-example/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Python Enumerate – Python Enum For Loop Index Example</a>
      </p><p>Quando stai programmando in Python, puoi utilizzare la funzione <code>enumerate()</code> e un ciclo <code>for</code> per visualizzare ciascun valore di un iterabile con una variabile contatore. </p><p>In questo articolo, ti mostrerò come usare la funzione <code>enumerate()</code> di Python con un ciclo <code>for</code> e ti spiegherò perché è una funzione migliore rispetto a creare un tuo contatore incrementale.</p><p>Prima però diamo un'occhiata a come farlo senza la funzione <code>enumerate()</code>.</p><h2 id="come-usare-un-ciclo-for-senza-la-funzione-enumerate-in-python"><strong>Come usare un ciclo <strong><code>for</code></strong> senza la funzione <strong><code>enumerate()</code></strong> <strong>in Python</strong></strong></h2><p>In Python, un iterabile è un oggetto su cui è possibile iterare per restituire un valore alla volta. Tra gli esempi di iterabili sono compresi liste, tuple e stringhe.</p><p>In questo esempio, abbiamo una lista di nomi di cani ed una variabile chiamata <code>count</code>.</p><pre><code class="language-py">dogs = ['Harley', 'Phantom', 'Lucky', 'Dingo']
count = 1</code></pre><p>Possiamo usare un ciclo <code>for</code> per attraversare la lista e stampare ciascun nome. Inoltre, incrementeremo la variabile <code>count</code> di 1 ogni volta per tenere traccia di quante volte abbiamo iterato sulla lista.</p><pre><code class="language-py">for name in dogs:
    print(count, name)
    count += 1</code></pre><p>Di seguito il risultato stampato sullo schermo:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-22-at-3.12.05-AM.png" class="kg-image" alt="Screen-Shot-2021-09-22-at-3.12.05-AM" width="600" height="400" loading="lazy"></figure><p>Anche se questo approccio funziona, presenta un possibile errore.</p><p>Un errore comune potrebbe essere quello di dimenticare di incrementare la variabile <code>count</code>.</p><p>Se modifico il codice, otteniamo:</p><pre><code class="language-py">dogs = ['Harley', 'Phantom', 'Lucky', 'Dingo']
count = 1
for name in dogs:
    print(count, name)</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-22-at-3.15.00-AM.png" class="kg-image" alt="Screen-Shot-2021-09-22-at-3.15.00-AM" width="600" height="400" loading="lazy"></figure><p>Ora la variabile <code>count</code> non tiene traccia più accuratamente del numero di iterazioni del ciclo sulla lista.</p><p>Invece di far incrementare un variabile <code>count</code>, possiamo usare la funzione <code>enumerate()</code> con il ciclo <code>for</code>.</p><h2 id="che-cosa-la-funzione-enumerate-in-python"><strong>Che cosa è la funzione <strong><code>enumerate()</code></strong> in Python? </strong></h2><p>La funzione integrata di Python <code>enumerate()</code> prende un iterabile come input e un argomento opzionale di inizio.</p><pre><code class="language-py">enumerate(iterabile, argomento opzionale di inizio)</code></pre><p>Se ometti l'argomento opzionale di inizio, il contatore viene impostato a zero.</p><p>Il valore restituito dalla funzione <code>enumerate()</code> è un oggetto.</p><p>Questa funzione tiene traccia delle iterazioni eseguite così che tu non ti debba ricordare di aggiornare la variabile <code>count</code> .</p><p>Possiamo usare la funzione <code>enumerate()</code> con un ciclo <code>for</code> per visualizzare il valore di un iterabile con un contatore.</p><h2 id="come-usare-un-ciclo-for-con-la-funzione-enumerate-in-python"><strong>Come usare un ciclo <strong><code>for</code></strong> con la funzione <strong><code>enumerate()</code></strong> in Python </strong></h2><p>In questo esempio, vogliamo visualizzare la lista delle indicazioni stradali per andare da Times Square alla Juilliard School of Music a New York.</p><p>Come prima cosa dobbiamo creare la lista delle indicazioni, denominata <code>directions</code>:</p><pre><code class="language-py">directions = [
    'Head north on Broadway toward W 48th St',
    'Turn left onto W 58th St',
    'Turn right onto 8th Ave',
    'Turn left onto Broadway',
    'Turn left onto Lincoln Center Plaza',
    'Turn right onto Jaffe Dr',
    'Turn left onto Broadway',
    'Turn left onto W 65th St'
]</code></pre><p>Quindi, nel ciclo <code>for</code>, creiamo le variabili <code>count</code> e <code>direction</code> che ci permetteranno di eseguire l'iterazione.</p><p>La funzione <code>enumerate()</code> prenderà come argomenti di input la lista &nbsp;<code>directions</code> e la variabile <code>start</code>. Vogliamo iniziare il conteggio da 1 invece che da 0 (come impostato di default).</p><pre><code class="language-py">for count, direction in enumerate(directions, start=1):</code></pre><p>All'interno del ciclo, stamperemo le variabili <code>count</code> e <code>direction</code>.</p><pre><code class="language-py">print(count, direction)</code></pre><p>Ecco il codice completo:</p><pre><code class="language-py">directions = [
    'Head north on Broadway toward W 48th St',
    'Turn left onto W 58th St',
    'Turn right onto 8th Ave',
    'Turn left onto Broadway',
    'Turn left onto Lincoln Center Plaza',
    'Turn right onto Jaffe Dr',
    'Turn left onto Broadway',
    'Turn left onto W 65th St'
]

for count, direction in enumerate(directions, start=1):
    print(count, direction)</code></pre><p>E il risultato nella console:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-22-at-3.52.27-AM.png" class="kg-image" alt="Screen-Shot-2021-09-22-at-3.52.27-AM" width="600" height="400" loading="lazy"></figure><p>Come puoi vedere la variabile <code>count</code> &nbsp;è stata automaticamente aggiornata dalla funzione <code>enumerate()</code>.</p><p>In questo modo si rimuove la possibilità di errori se dimentichiamo di incrementare la variabile <code>count</code>.</p><h2 id="conclusioni"><strong>Conclusioni</strong></h2><p>Puoi utilizzare la funzione <code>enumerate()</code> ed il ciclo <code>for</code> per visualizzare ciascun valore di un iterabile con un contatore.</p><p>La funzione <code>enumerate()</code> prende come input un iterabile e un argomento opzionale di inizio.</p><pre><code class="language-py">enumerate(iterabile, argomento opzionale di inizio)</code></pre><p>Se l'argomento opzionale di inizio viene omesso, il conteggio viene inizializzato a zero.</p><p>L'uso della funzione <code>enumerate()</code> è un'alternativa migliore rispetto a creare un proprio contatore incrementale in un ciclo <code>for</code>.</p><p>La funzione <code>enumerate()</code> aggiorna automaticamente il conteggio e pertanto elimina la possibilità che si possa dimenticare di incrementare il contatore.</p><p>Spero che questo articolo ti sia piaciuto e buona fortuna per il tuo viaggio nel mondo di Python.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Da Stringa ad Array in Python – Come Convertire una Stringa in una Lista ]]>
                </title>
                <description>
                    <![CDATA[ Ci saranno volte in cui avrai bisogno di convertire un tipo di dato in un altro. Non temere, poiché  Python offre diversi modi per svolgere questa operazione. In questo articolo, vedremo alcuni dei modi per convertire una stringa in una lista. Tratteremo i seguenti argomenti:  1. Una panoramica su ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/da-stringa-ad-array-in-python-come-convertire-una-stringa-in-una-lista/</link>
                <guid isPermaLink="false">66824c83b3d5b00437d67789</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ edangeli ]]>
                </dc:creator>
                <pubDate>Mon, 01 Jul 2024 16:35:24 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2024/07/steve-johnson-8VO-UxlJ-Lw-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/python-string-to-array-how-to-convert-text-to-a-list/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Python String to Array – How to Convert Text to a List</a>
      </p><p>Ci saranno volte in cui avrai bisogno di convertire un tipo di dato in un altro.</p><p>Non temere, poiché &nbsp;Python offre diversi modi per svolgere questa operazione.</p><p>In questo articolo, vedremo alcuni dei modi per convertire una stringa in una lista.</p><p>Tratteremo i seguenti argomenti:</p><!--kg-card-begin: markdown--><ol>
<li><a href="#cosa-sono-le-stringhe-e-le-liste-in-python">Una panoramica su stringhe e liste</a>
<ol>
<li><a href="#come-determinare-il-tipo-di-dato-di-un-oggetto-in-python">Come verificare il tipo di dato di un oggetto</a></li>
</ol>
</li>
<li><a href="#come-convertire-una-stringa-in-una-lista-di-singoli-caratteri">Convertire una stringa in una lista di singoli caratteri</a></li>
<li><a href="#come-convertire-una-stringa-in-una-lista-di-parole">Convertire una stringa in una lista di parole</a>
<ol>
<li><a href="#analisi-del-metodo-split-in-python">Analisi della sintassi del metodo <code>split()</code></a></li>
<li><a href="#come-utilizzare-il-metodo-split-con-un-separatore">Utilizzare <code>split()</code> con un separatore</a></li>
<li><a href="#come-usare-il-metodo-split-con-il-parametro-maxsplit">Utilizzare <code>split()</code> con il parametro <code>maxsplit</code></a></li>
</ol>
</li>
<li><a href="#come-convertire-una-stringa-di-numeri-interi-in-una-lista-di-numeri-interi">Convertire una stringa di numeri in una lista di numeri</a></li>
</ol>
<!--kg-card-end: markdown--><h2 id="cosa-sono-le-stringhe-e-le-liste-in-python"><strong>Cosa sono le stringhe e le liste in Python?</strong></h2><p>Una <strong><strong>string</strong>a</strong> è una sequenza ordinata di caratteri. È una serie di caratteri, in cui un carattere segue l'altro.</p><p>Una stringa è racchiusa tra virgolette singole o doppie:</p><pre><code class="language-python"># le seguenti sono tutte stringhe

# una stringa compresa tra virgolette singole
first_name = 'John'

# una stringa compresa tra virgolette doppie
last_name = "Doe"
</code></pre><p>Se desideri creare una stringa che si estende su più righe - una cosiddetta stringa multiriga - devi racchiuderla utilizzando le virgolette triple:</p><pre><code class="language-python"># una stringa multiriga compresa tra virgolette triple

phrase = '''Sto studiando Python
e mi piace molto imparare questo linguaggio!
'''
</code></pre><p>Le stringhe sono <em>immutabili</em>. Questo significa che una volta create, non possono essere modificate. I singoli caratteri che costituiscono una stringa non possono essere alterati.</p><p>Per esempio, se cercassi di cambiare la prima lettera di una parola da minuscola a maiuscola, otterresti un errore:</p><pre><code class="language-python"># prova a cambiare 'p' minuscola in 'P' maiuscola
fave_language = "python"
fave_language[0] = "P"

print(fave_language)

# il risultato sarà un messaggio di errore
#fave_language[0] = "P"
#TypeError: 'str' object does not support item assignment
</code></pre><p>Tuttavia, puoi riassegnare una stringa diversa aggiornando la variabile in questo modo:</p><pre><code class="language-python">fave_language = "python"
fave_language = "Python"

print(fave_language)

#risultato
#Python
</code></pre><p>Una <strong><strong>lis</strong>ta</strong> è una collezione ordinata di dati.</p><p>Più elementi (in genere correlati) sono memorizzati insieme nella stessa variabile.</p><p>È possibile creare una lista racchiudendo zero o più elementi tra parentesi quadre, <code>[]</code>, ognuno separato da una virgola.</p><p>Una lista può contenere qualsiasi tipo di dato integrato in Python.</p><pre><code class="language-python"># una lista di numeri
my_numbers_list = [10,20,30,40,50]

print(my_numbers_list)

# risultato
# [10, 20, 30, 40, 50]
</code></pre><p>Le liste sono <em>mutabili</em>.</p><p>Puoi modificare gli elementi di una lista dopo che è stata creata. Ciò significa che puoi modificare gli elementi esistenti, aggiungerne di nuovi o eliminarli in qualsiasi momento durante la vita del programma.</p><pre><code class="language-python">programming_languages = ["Javascript", "Python", "Java"]

#cambia il primo elemento della lista
programming_languages[0] = "JavaScript"

print(programming_languages)

#risultato
#['JavaScript', 'Python', 'Java']
</code></pre><h3 id="come-determinare-il-tipo-di-dato-di-un-oggetto-in-python">Come determinare il tipo di dato di un oggetto in Python</h3><p>Per trovare il tipo di dato di un oggetto in Python, puoi utilizzare la funzione incorporata <code>type()</code>, che ha la seguente sintassi:</p><pre><code class="language-python">type(object)

#object è l'oggetto di cui devi trovare il tipo di dato
</code></pre><p>La funzione <code>type()</code> restituisce il tipo dell'oggetto passato come argomento alla funzione.</p><p>Questa funzione è di solito utilizzata per il debug.</p><p>Vediamo come usare la funzione <code>type()</code> con stringhe e liste nel prossimo esempio:</p><pre><code class="language-python">my_name = "John Doe"
my_lucky_numbers = [7,14,33]

print(type(my_name))
print(type(my_lucky_numbers))

#risultato
#&lt;class 'str'&gt;
#&lt;class 'list'&gt;
</code></pre><h2 id="come-convertire-una-stringa-in-una-lista-di-singoli-caratteri"><strong>Come convertire una stringa in una lista di singoli caratteri</strong></h2><p>Puoi prendere una parola e trasformarla in una lista.</p><p>Ogni singolo carattere che compone la parola diventa un elemento individuale e separato all'interno della lista.</p><p>Per esempio, prendiamo la parola "Python".</p><p>Puoi convertirla in una lista di caratteri, dove ogni elemento della lista corrisponde ad uno dei caratteri che costituisce la stringa "Python".</p><p>Ciò significa che il carattere <code>P</code> sarebbe un elemento della lista, il carattere &nbsp;<code>y</code> sarebbe un altro elemento della lista, il carattere <code>t</code> sarebbe un ulteriore elemento e così via.</p><p>Il modo più semplice consiste nel trasformare la stringa in una lista, metodo noto come typecasting (conversione di tipo).</p><p>Il typecasting permette di convertire direttamente un tipo di dato in un altro – in questo caso dal tipo di dato denominato 'stringa' al tipo di dato chiamato 'lista'.</p><p>Puoi fare ciò utilizzando la funzione incorporata <code>list()</code>, passando la stringa data come argomento della funzione.</p><pre><code class="language-python">programming_language = "Python"

programming_language_list = list(programming_language)

print(programming_language_list)

#risultato
#['P', 'y', 't', 'h', 'o', 'n']
</code></pre><p>Vediamo un altro esempio:</p><pre><code class="language-python">current_routine = " Learning Python ! "

current_routine_list = list(current_routine)

print(current_routine_list)

#risultato
#[' ', 'L', 'e', 'a', 'r', 'n', 'i', 'n', 'g', ' ', 'P', 'y', 't', 'h', 'o', 'n', ' ', '!', ' ']
</code></pre><p>Il testo <code>" Learning Python ! "</code> ha spazi vuoti sia all'inizio che alla fine (tra le doppie virgolette e Learning, tra il punto esclamativo e le doppie virgolette), spazi vuoti tra le parole "Learning" e "Python" e spazi vuoti tra la parola "Python" e il punto esclamativo.</p><p>Quando la stringa viene convertita in una lista di caratteri, ogni spazio vuoto viene trattato come un singolo carattere ed è per questo che si vedono gli spazi vuoti tra virgolette singole ( <code>' '</code>) come elementi della lista.</p><p>Per rimuovere gli spazi vuoti solo dall'inizio e dalla fine della stringa, puoi utilizzare il metodo <code>strip()</code> .</p><pre><code class="language-python">current_routine = " Learning Python ! "

#gli spazi vuoti all'inizio e alla fine non saranno più elementi facenti parte della lista 

current_routine_list = list(current_routine.strip())

print(current_routine_list)

#risultato
#['L', 'e', 'a', 'r', 'n', 'i', 'n', 'g', ' ', 'P', 'y', 't', 'h', 'o', 'n', ' ', '!']
</code></pre><p>Per rimuovere <em>tutti</em> gli spazi vuoti, e non solo quelli iniziali e finali, e fare in modo che nessun carattere di spazio vuoto sia compreso nella nuova lista, puoi utilizzare invece il metodo <code>replace()</code>:</p><pre><code class="language-python">current_routine = " Learning Python ! "

#sostituisce ogni spazio vuoto con nessuno spazio
current_routine_list = list(current_routine.replace(" ", ""))

print(current_routine_list)

#risultato
#['L', 'e', 'a', 'r', 'n', 'i', 'n', 'g', 'P', 'y', 't', 'h', 'o', 'n', '!']
</code></pre><h2 id="come-convertire-una-stringa-in-una-lista-di-parole"><strong>Come convertire una stringa in una lista di parole</strong></h2><p>Il metodo <code>split()</code> è un altro modo per convertire una stringa in una lista.</p><p>Il metodo <code>split()</code> divide una stringa in una lista, dove ogni elemento della lista corrisponde ad una rispettiva parola che compone la stringa.</p><p>Ogni parola sarà un singolo elemento della lista.</p><h3 id="analisi-del-metodo-split-in-python"><strong>Analisi del metodo <code>split()</code> in Python</strong></h3><p>La sintassi generale del metodo <code>split()</code> è la seguente:</p><pre><code class="language-python">string.split(separator=None, maxsplit=-1)
</code></pre><p>Vediamo come è strutturata:</p><ul><li><code>string</code> è la stringa che si vuole trasformare in una lista.</li><li>Il metodo <code>split()</code> trasforma una stringa in una lista. Accetta due parametri <em><em>op</em>z<em>ional</em>i</em>.</li><li><code>separator</code> è il primo parametro opzionale e definisce il punto in cui la stringa sarà divisa. Per impostazione predefinita, il separatore è uno spazio vuoto e la stringa verrà divisa ovunque ci sia uno spazio vuoto.</li><li><code>maxsplit</code> è il secondo parametro opzionale. Specifica il numero massimo di divisioni da eseguire. Il valore predefinito, <code>-1</code>, significa che la stringa viene suddivisa in tutta la sua lunghezza e non ci sono limiti alla suddivisione.</li></ul><p>Vediamo un esempio di come funziona.</p><pre><code class="language-python">phrase = "I am learning Python !"

print(type(phrase))

#risultato
#&lt;class 'str'&gt;
</code></pre><p>Nella stringa sopra, ogni parola che la compone è separata da uno spazio vuoto.</p><p>Puoi utilizzare il metodo <code>split()</code> per trasformare questa stringa in una lista di parole.</p><p>Non è necessario che specifichi un separatore o un parametro <code>maxsplit</code>, poiché vogliamo separare tutte le parole ovunque ci siano spazi vuoti tra di esse.</p><pre><code class="language-python">phrase = "I am learning Python !"

phrase_to_list = phrase.split()

print(phrase_to_list)
print(type(phrase_to_list))


#risultato
#['I', 'am', 'learning', 'Python', '!']
#&lt;class 'list'&gt;
</code></pre><p>La stringa è stata suddivisa in base a dove c'erano spazi vuoti e ogni parola che la costituiva è stata trasformata in un singolo elemento della lista.</p><h3 id="come-utilizzare-il-metodo-split-con-un-separatore"><strong>Come utilizzare il metodo <code>split()</code> con un separatore</strong></h3><p>Puoi anche convertire una stringa in una lista utilizzando un separatore con il metodo <code>split()</code>. Il separatore può essere un qualsiasi carattere da te scelto.</p><p>La stringa verrà divisa in base al separatore da te dato.</p><p>Ad esempio, puoi usare una virgola, <code>,</code>, come separatore.</p><p>La stringa si trasformerà in una lista ogni volta che c'è una virgola, partendo da sinistra.</p><p>Gli elementi separati da una virgola saranno i singoli elementi della lista.</p><p>Prendiamo la stringa seguente:</p><pre><code class="language-python">phrase = "Hello world,I am learning Python!"
</code></pre><p>Una virgola separa <code>Hello world</code> da <code>I am learning Python!</code>.</p><p>Se desideriamo usare la virgola come separatore per creare due singoli elementi della lista, procederemo come segue:</p><pre><code class="language-python">phrase = "Hello world,I am learning Python!"

phrase_to_list = phrase.split(",")

print(phrase_to_list)

#risultato
#['Hello world', 'I am learning Python!']
</code></pre><p>Due elementi separati sono stati creati come elementi della lista e la divisione è avvenuta dove c'era la virgola.</p><p>Un altro esempio potrebbe essere quello di separare un nome di dominio, ogni volta che c'è un punto, <code>.</code>.</p><pre><code class="language-python">domain_name = "www.freecodecamp.org"

domain_name_list = domain_name.split(".")

print(domain_name_list)

#risultato
#['www', 'freecodecamp', 'org']
</code></pre><p>Ogni volta che c'è un punto, un nuovo elemento sarà aggiunto alla lista.</p><h3 id="come-usare-il-metodo-split-con-il-parametro-maxsplit"><strong>Come usare il metodo <code>split()</code> con il parametro <code>maxsplit</code> </strong></h3><p>Come menzionato in precedenza, <code>maxsplit</code> è un parametro opzionale del metodo <code>split()</code>.</p><p>Definisce quanti elementi della lista verranno divisi e trasformati in singoli elementi della lista. Di default, il parametro <code>maxsplit</code> è impostato a <code>-1</code>. Ciò significa che tutti gli elementi che compongono la stringa saranno divisi.</p><p>Ma possiamo cambiare il valore con un numero specifico.</p><p>Per dividere la stringa soltanto due volte, modifichiamo <code>maxsplit</code> a 2:</p><pre><code class="language-python">current_routine = "I enjoy learning Python everyday"

current_routine_list = current_routine.split(maxsplit=2)

print(current_routine_list)

#risultato
#['I', 'enjoy', 'learning Python everyday']
</code></pre><p><code>maxsplit</code> è impostato a <code>2</code>, il che significa che massimo due parole saranno divise da uno spazio e costituiranno due singoli elementi della lista. Il terzo elemento della lista sarà costituito dal resto delle parole che compongono la stringa iniziale.</p><p>Utilizzando un altro esempio della sezione precedente, puoi combinare un separatore con <code>maxsplit</code> per eseguire una conversione mirata di una stringa in un elenco:</p><pre><code class="language-python">domain_name = "www.freecodecamp.org"

domain_name_list = domain_name.split(".", maxsplit=1)

print(domain_name_list)

#risultato
#['www', 'freecodecamp.org']
</code></pre><p>In questo esempio, il separatore era un punto e solo il primo elemento è stato separato.</p><h2 id="come-convertire-una-stringa-di-numeri-interi-in-una-lista-di-numeri-interi">Come convertire una stringa di numeri interi in una lista di numeri interi</h2><p>I numeri sono considerati stringhe quando sono racchiusi tra virgolette singole o doppie.</p><p>Supponiamo che la tua data di nascita sia memorizzata come una stringa, come di seguito:</p><pre><code class="language-python">birthdate = "19/10/1993"

print(type(birthdate))

#risultato
#&lt;class 'str'&gt;
</code></pre><p>Per rimuovere le barre e memorizzare i numeri associati alla data, al mese e all'anno di nascita come elementi separati della lista, puoi procedere così:</p><pre><code class="language-python">birthdate = "19/10/1993"

birthdate_list = birthdate.split("/")

print(birthdate_list)
print(type(birthdate_list))

#risultato
#['19', '10', '1993']
#&lt;class 'list'&gt;
</code></pre><p>Nell'esempio qui sopra il separatore era la barra, <code>/</code>, e un nuovo elemento della lista è stato creato in ogni punto in cui c'era una barra.</p><p>Se osservi attentamente il risultato, vedrai che gli elementi della lista sono ancora stringhe: sono racchiusi da virgolette singole e non è stata effettuata alcuna conversione di tipo.</p><p>Per convertire ogni elemento della lista da una stringa a un numero intero, puoi usare la funzione <code>map</code>.</p><p>La funzione <code>map</code> prende due argomenti:</p><ul><li>Una funzione. In questo caso la funzione sarà la funzione <code>int</code>.</li><li>Un iterabile, ovvero una sequenza o una collezione di elementi. In questo caso, l'iterabile è la lista da noi creata.</li></ul><pre><code class="language-python">birthdate = "19/10/1993"

birthdate_list = birthdate.split("/")

str_to_int = (map(int, birthdate_list))

print(str_to_int)

#risultato
#&lt;map object at 0x10e289960&gt;
</code></pre><p>Questo non è esattamente il risultato che volevamo. Quando controlliamo il tipo di dato, vediamo che non abbiamo più una lista:</p><pre><code class="language-python">print(type(str_to_int))

#risultato
#&lt;class 'map'&gt;
</code></pre><p>Per correggere questo problema, dobbiamo tornare indietro e aggiungere la funzione <code>list()</code> prima della conversione:</p><pre><code class="language-python">birthdate = "19/10/1993"

birthdate_list = birthdate.split("/")

str_to_int = list(map(int, birthdate_list))

print(type(str_to_int))
print(str_to_int)

#risultato
#&lt;class 'list'&gt;
#[19, 10, 1993]
</code></pre><h2 id="conclusioni"><strong>Conclusioni</strong></h2><p>Ed ecco fatto! Ora conosci alcuni dei modi per trasformare una stringa in una lista in Python.</p><p>Per saperne di più sul linguaggio di programmazione Python, dai un'occhiata alla certificazione di freeCodeCamp <a href="https://www.freecodecamp.org/learn/scientific-computing-with-python/">Scientific Computing with Python Certification</a>.</p><p>È un corso adatto anche ai principianti, ti permetterà di partire dalle basi ed imparare in modo facile ed interattivo. Inoltre, avrai modo di realizzare cinque progetti per mettere in pratica e rafforzare quanto imparato.</p><p>Grazie per il tempo dedicato alla lettura e buona programmazione!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Come creare il tuo primo package in Python ]]>
                </title>
                <description>
                    <![CDATA[ Alcuni mesi fa, ho deciso di rilasciare Caer [https://github.com/jasmcaus/caer], un pacchetto (package) per la visione artificiale (computer vision) disponibile in Python. Ho trovato l'intero processo estremamente complicato e frustrante. Probabilmente puoi immaginarne il motivo: documentazione scarsa (e confusa), mancanza di buoni tutorial, e così via. Ho così deciso di scrivere ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/come-creare-il-tuo-primo-package-in-python/</link>
                <guid isPermaLink="false">667d7b2630e9f504366b72fe</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Andrea Sisti ]]>
                </dc:creator>
                <pubDate>Fri, 28 Jun 2024 13:17:47 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2024/06/5f9c980f740569d1a4ca17ef.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/build-your-first-python-package/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">https://www.freecodecamp.org/news/build-your-first-python-package/</a>
      </p><p>Alcuni mesi fa, ho deciso di rilasciare <a href="https://github.com/jasmcaus/caer">Caer</a>, un pacchetto (package) per la visione artificiale (computer vision) disponibile in Python. Ho trovato l'intero processo estremamente complicato e frustrante. Probabilmente puoi immaginarne il motivo: documentazione scarsa (e confusa), mancanza di buoni tutorial, e così via.</p><p>Ho così deciso di scrivere questo articolo nella speranza di aiutare chi sta affrontando le stesse difficoltà nel creare un package in Python. Realizzeremo un modulo molto semplice e lo renderemo disponibile a chiunque in tutto il mondo. &nbsp;</p><p>Il contenuto di questo modulo segue una struttura molto basilare. In totale sono riportati quattro file Python, ciascuno dei quali contiene un singolo metodo. Per questo tutorial adottiamo appositamente uno schema molto semplice.</p><pre><code>base-verysimplemodule  --&gt; Cartella base
└── verysimplemodule   --&gt; Modulo effettivo
    ├── extras
    │   ├── multiply.py
    │   ├── divide.py
    ├── add.py
    ├── subtract.py</code></pre><p>Puoi notare che abbiamo una cartella chiamata &nbsp;<code>verysimplemodule</code>, la quale, a sua volta, contiene i due file Python <code>add.py</code> e <code>subtract.py</code>. C'è anche una sottocartella chiamata <code>extras</code> (che contiene i file <code>multiply.py</code> e <code>divide.py</code>). La cartella <code>verysimplemodule</code> costituirà la base del nostro modulo Python.</p><h3 id="creare-i-file-__-init-__-py"><strong>Creare i file __ init __.py</strong></h3><p>Una cosa che si trova sempre in qualsiasi package di Python è un file &nbsp;<code>__init__.py</code>. Questo file comunica a Python di considerare le cartelle come moduli (o sotto-moduli).</p><p>Molto semplicemente, questo file conserva i nomi di tutti i metodi contenuti in tutti i file Python che si trovano nella sua stessa cartella.</p><p>Un tipico file <code>__init__.py</code> ha il seguente formato:</p><pre><code class="language-python">from file import method 

# 'method' è un funzione presente nel file denominato 'file.py'</code></pre><p>Per creare un package in Python, occorre aggiungere un file <code>__init__.py</code> &nbsp;in ogni sottocartella del tuo package. Queste sottocartelle diventano i <em>sottomoduli</em> del tuo package.</p><p>Nel nostro caso, aggiungiamo i nostri file <code>__init__.py</code> alla cartella del modulo effettivo, denominata <code>verysimplemodule</code>, in questo modo:</p><pre><code class="language-python">from add import add
from subtract import subtract</code></pre><p>e facciamo lo stesso per la sottocartella <code>extras</code>, in questo modo:</p><pre><code class="language-python">from multiply import multiply
from divide import divide</code></pre><p>Una volta fatto questo, siamo praticamente a metà dell'opera!</p><h3 id="come-impostare-il-file-setup-py"><strong>Come impostare il file<strong> setup.py</strong></strong></h3><p>All'interno della cartella <code>base-verysimplemodule</code> (e nella stessa cartella del nostro modulo <code>verysimplemodule</code>), dobbiamo aggiungere il file <code>setup.py</code>. Questo file è essenziale se si intende effettuare il build del modulo in questione.</p><p>Nota: si può nominare il file <code>setup.py</code> a piacimento. Questo file non deve avere un nome specifico, a differenza del file <code>__init__.py</code>.</p><p>Alcune possibili scelte per il nome possono essere <code>setup_my_very_awesome_python_package.py</code> e <code>python_package_setup.py</code>, ma di solito è buona pratica utilizzare <code>setup.py</code>.</p><p>Il file <code>setup.py</code> conterrà informazioni sul tuo package, specificamente il nome del package, la sua versione, le dipendenze dalle diverse piattaforme e molto altro.</p><p>Per i nostri scopi, non sono richieste meta-informazioni avanzate, così il seguente codice dovrebbe andare bene per la maggior parte dei pacchetti che creerai:</p><pre><code class="language-python">from setuptools import setup, find_packages

VERSION = '0.0.1' 
DESCRIPTION = 'Il mio primo package in Pyhton'
LONG_DESCRIPTION = 'Il mio primo package in Python con una descrizione un po più lunga'

# Impostazioni
setup(
       # il nome deve essere uguale a quello della cartella 'verysimplemodule'
        name="verysimplemodule", 
        version=VERSION,
        author="Jason Dsouza",
        author_email="&lt;youremail@email.com&gt;",
        description=DESCRIPTION,
        long_description=LONG_DESCRIPTION,
        packages=find_packages(),
        install_requires=[], # aggiungi qualsiasi package addizionale che 
        # deve essere installato insieme al tuo package. Ad Es. 'caer'
        
        keywords=['python', 'first package'],
        classifiers= [
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Education",
            "Programming Language :: Python :: 2",
            "Programming Language :: Python :: 3",
            "Operating System :: MacOS :: MacOS X",
            "Operating System :: Microsoft :: Windows",
        ]
)</code></pre><p>Una volta fatto questo, possiamo lanciare il seguente comando nella stessa cartella di <code>base-verysimplemodule</code>:</p><pre><code>python setup.py sdist bdist_wheel</code></pre><p>Questo comando permetterà di effettuare il build di tutti i pacchetti necessari richiesti da Python. Il comandi <code>sdist</code> e <code>bdist_wheel</code> permettono di creare una distribuzione sorgente (<em>source distribution</em>) e una distribuzione binaria in formato wheel (<em>.whl</em>) che potrai successivamente caricare su PyPi.</p><h3 id="pypi-eccoci-arrivati-"><strong><strong>PyPi — </strong>eccoci arrivati!</strong></h3><p><a href="https://pypi.org/" rel="noopener">PyPi</a> è l'archivio ufficiale di Python dove sono conservati tutti i package Python. Si può considerarlo un pò come il <em>Github per i Package di Python</em>.</p><p>Per rendere il tuo package disponibile agli utenti in tutto il mondo, devi attivare un <a href="https://pypi.org/account/register/" rel="noopener">account PyPi</a>.</p><p>Fatto ciò, saremo pronti per caricare il nostro package su PyPi. Ricordi la distribuzione sorgente e la distribuzione binaria Wheel che sono state costruite quando è stato lanciato il comando <code>python setup.py</code>? Bene, è proprio ciò che verrà effettivamente caricato su PyPi.</p><p>Ma prima di fare tutto questo, devi installare <code>twine</code> se non lo hai già installato. L'operazione è molto semplice e si esegue lanciando il comando <code>pip install twine</code>.</p><h3 id="come-caricare-il-tuo-package-su-pypi"><strong>Come caricare il tuo package su PyPi</strong></h3><p>Assumendo di avere installato <code>twine</code> , procediamo lanciando il seguente comando:</p><pre><code>twine upload dist/*</code></pre><p>Questo comando caricherà i contenuti della cartella <code>dist</code>, che è stata generata automaticamente quando abbiamo lanciato il comando <code>python setup.py</code>. Verrà visualizzato un prompt che chiederà lo username e la password dell'account PyPi, quindi procediamo ed inseriamoli come richiesto.</p><p>A questo punto, se hai seguito questo tutorial alla lettera, potresti ottenere un errore del tipo <strong>il repository è già esistente.</strong></p><p>Questo accade di solito perché c'è un conflitto tra i nomi del tuo package e di un package già esistente. In altre parole, cambia il nome del tuo package - quel nome è già stato utilizzato.</p><p>Ed è tutto!</p><p>Per installare orgogliosamente il tuo modulo tramite <code>pip</code>, avvia un terminale e lancia il comando:</p><pre><code>pip install &lt;nome_package&gt; 

# nel nostro caso:
pip install verysimplemodule</code></pre><p>Osserva come Python installa accuratamente il tuo package dai file binari che sono stati generati prima.</p><p>Apri una shell interattiva di Python e prova ad importare il tuo package:</p><pre><code class="language-shell">&gt;&gt; import verysimplemodule as vsm

&gt;&gt; vsm.add(2,5)
7
&gt;&gt; vsm.subtract(5,4)
1</code></pre><p>Per accedere ai metodi per divisione emoltiplicazione ( ricordi che erano in una sottocartella chiamata <code>extras</code>?), lancia il comandi:</p><pre><code class="language-shell">&gt;&gt; import verysimplemodule as vsm

&gt;&gt; vsm.extras.divide(4,2)
2
&gt;&gt; vsm.extras.multiple(5,3)
15</code></pre><p>È proprio così semplice.</p><p>Congratulazioni! Hai appena creato il tuo primo package in Python. Anche se molto semplice, il tuo package è adesso disponibile per il download da chiunque in tutto il mondo (premesso che abbia Python, ovviamente).</p><h2 id="qual-il-prossimo-passo"><strong>Qual è il prossimo passo?</strong></h2><h3 id="test-pypi"><strong>Test<strong> PyPi</strong></strong></h3><p>Il package che abbiamo usato in questo tutorial era un modulo estremamente semplice - le operazioni matematiche basilari di addizione, sottrazione, moltiplicazione e divisione. Non ha senso caricarlo direttamente in PyPi <em>specialmente </em>se lo stai provando per la prima volta.</p><p>Fortunatamente per noi, esiste <a href="http://test.pypi.org/" rel="noopener">Test PyPi</a>, una istanza separata di PyPi dove puoi testare e sperimentare il tuo pacchetto (è necessario iscriverti ad un account separato sulla piattaforma).</p><p>Il processo da seguire per caricare su Test PyPi è praticamente lo stesso, con qualche piccola modifica.</p><pre><code class="language-shell"># Il seguente comando caricherà il package su Test PyPi
# Ti verrà chiesto di fornire le tue credenziali di accesso a Test PyPi

twine upload --repository testpypi dist/*</code></pre><p>Per scaricare progetti da Test PyPi:</p><pre><code class="language-shell">pip install --index-url "https://test.pypi.org/simple/&lt;nome_package&gt;"</code></pre><h3 id="meta-informazioni-avanzate"><strong>Meta-informazioni avanzate</strong></h3><p>Le meta-informazioni che abbiamo usato nel file <code>setup.py</code> erano molto basilari. Puoi aggiungere ulteriori informazioni come manutentori multipli (se ci sono), email dell'autore, informazioni sulla licenza ed un gran numero di altri dati.</p><p><a href="https://packaging.python.org/guides/distributing-packages-using-setuptools/" rel="noopener">Questo articolo</a> si rivelerà particolarmente utile se intendi farlo.</p><h3 id="dai-un-occhiata-ad-altri-repository"><strong>Dai un'occhiata ad altri repository</strong></h3><p>Vedere come gli altri repository hanno costruito i loro pacchetti si può rivelare molto utile.</p><p>Mentre realizzavo <a href="https://github.com/jasmcaus/caer" rel="noopener">Caer</a>, osservavo costantemente come <a href="https://github.com/numpy/numpy" rel="noopener">Numpy</a> e <a href="https://github.com/deepmind/sonnet" rel="noopener">Sonnet</a> impostavano il loro pacchetti. Raccomanderei di dare un'occhiata ai repository di <a href="https://github.com/jasmcaus/caer" rel="noopener">Caer</a>, <a href="https://github.com/numpy/numpy" rel="noopener">Numpy</a> e <a href="https://github.com/tensorflow/tensorflow" rel="noopener">Tensorflow</a> se stai pianificando di realizzare pacchetti leggermente più avanzati.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ I Metodi delle Stringhe di Python split() e join() – Spiegati con Esempi ]]>
                </title>
                <description>
                    <![CDATA[ Quando lavori con le stringhe in Python, potresti dover suddividere una stringa in sottostringhe. O potresti aver bisogno di unire pezzi più piccoli per formare una stringa. I metodi delle stringhe di Python split() e join() ti aiutano ad eseguire queste operazioni facilmente. In questo tutorial, imparerai i metodi delle ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/i-metodi-delle-stringhe-di-python-split-e-join-spiegati-con-esempi/</link>
                <guid isPermaLink="false">65736055e01ce503fea87dee</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Paola Rosati ]]>
                </dc:creator>
                <pubDate>Tue, 12 Mar 2024 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/12/split-join.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/python-string-split-and-join-methods-explained-with-examples" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Python String split() and join() Methods – Explained with Examples</a>
      </p><p>Quando lavori con le stringhe in Python, potresti dover suddividere una stringa in sottostringhe. O potresti aver bisogno di unire pezzi più piccoli per formare una stringa. I metodi delle stringhe di Python <code>split()</code> e <code>join()</code> ti aiutano ad eseguire queste operazioni facilmente.</p><p>In questo tutorial, imparerai i metodi delle stringhe <code>split()</code> e <code>join()</code> con molti esempi di codice.</p><p>Poiché le stringhe in Python sono immutabili, puoi chiamare questi metodi su di loro senza modificare le stringhe originali. Iniziamo!</p><h2 id="sintassi-del-metodo-split-di-python"><strong>Sintassi del Metodo <code>split()</code> di Python</strong></h2><p>Quando hai bisogno di dividere una stringa in sottostringhe, puoi usare il metodo <code>split()</code>.</p><p>Il metodo <code>split()</code> opera su una stringa e <em>restituisce</em> una lista di sottostringhe. La sintassi è:</p><pre><code class="language-python">&lt;string&gt;.split(sep,maxsplit)</code></pre><p>Nella sintassi qui in alto:</p><ul><li><code>&lt;string&gt;</code> è una qualsiasi stringa valida in Python,</li><li><code>sep</code> è il separatore in corrispondenza del quale vuoi dividere la stringa. Deve essere specificato come <em>stringa</em>.</li></ul><blockquote><code>&lt;string&gt;</code> &nbsp;<code>sep = ","</code></blockquote><ul><li><code>sep</code> è un argomento <em>opzionale</em>. Di default, il metodo divide le stringhe sugli <em>spazi</em>.</li><li><code>maxsplit</code> è un argomento <em>opzionale </em>che indica quante volte vuoi dividere <code>&lt;string&gt;</code>.</li><li><code>maxsplit</code> ha come valore di default <code>-1</code>, che divide la stringa su <em>tutte</em> le occorrenze di <code>sep</code>.</li></ul><blockquote><code>&lt;string&gt;</code> &nbsp;<em><em>first</em></em> &nbsp;<code>maxsplit = 1</code></blockquote><p>E impostare <code>maxsplit = 1</code> ti lascerà con due porzioni - una con la sezione di <code>&lt;string&gt;</code> prima della prima virgola, e un'altra con la sezione di <code>&lt;string&gt;</code> dopo la prima virgola.</p><p>Quando dividi una stringa una volta sola, ottieni 2 porzioni. Quando la dividi due volte, ottieni 3 porzioni. Quando dividi una stringa <code>k</code> volte, ottieni <code>k+1</code> porzioni.</p><p>▶ Prendiamo alcuni esempi per vedere il metodo <code>split()</code> in azione.</p><h2 id="esempi-del-metodo-split-in-python"><strong>Esempi del Metodo <code>split()</code> in Python</strong></h2><p>Iniziamo con <code>my_string</code>, mostrata qui sotto.</p><pre><code class="language-python">my_string = "I code for 2 hours everyday"</code></pre><p>Ora, chiamiamo il metodo <code>split()</code> su <code>my_string</code>, senza gli argomenti <code>sep</code> e <code>maxsplit</code>.</p><pre><code class="language-python">my_string.split()</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/10/image-50.png" class="kg-image" alt="image-50" width="600" height="400" loading="lazy"></figure><p>Puoi notare che <code>my_string</code> è stata divisa in corrispondenza di tutti gli spazi e che viene restituita una lista di sottostringhe, come mostrato in alto.</p><p>▶ Prendiamo ora in considerazione il seguente esempio. Qui, <code>my_string</code> contiene nomi di frutti separati da virgole.</p><pre><code class="language-python">my_string = "Apples,Oranges,Pears,Bananas,Berries"</code></pre><p>Dividiamo ora <code>my_string</code> in corrispondenza delle virgole – imposta <code>sep = ","</code> o specifica solo <code>","</code> nella chiamata del metodo.</p><pre><code class="language-python">my_string.split(",")</code></pre><p>Come previsto, il metodo <code>split()</code> restituisce una lista di frutti, dove ogni frutto in <code>my_string</code> è ora un elemento della lista.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/10/image-51.png" class="kg-image" alt="image-51" width="600" height="400" loading="lazy"></figure><p>▶ Usiamo ora anche l'argomento opzionale <code>maxsplit</code> impostandolo su 2.</p><pre><code class="language-python">my_string.split(",",2)</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/10/image-52.png" class="kg-image" alt="image-52" width="600" height="400" loading="lazy"></figure><p>Proviamo ad analizzare la lista restituita.</p><p>Ricorda che <code>my_string</code> è <code>"Apples,Oranges,Pears,Bananas,Berries"</code>, e abbiamo deciso di dividerla in corrispondenza delle virgole (<code>","</code>).</p><ul><li>La prima virgola si trova dopo <code>Apples</code>, e dopo la prima divisione avrai due elementi, <code>Apples</code> e <code>Oranges,Pears,Bananas,Berries</code>.</li><li>La seconda virgola si trova dopo <code>Oranges</code>. E avrai 3 elementi, <code>Apples</code>, <code>Oranges</code>, e <code>Pears,Bananas,Berries</code> dopo la seconda divisione.</li><li>A questo punto, <code>maxsplit</code> ha raggiunto il valore 2, e non si può fare nessun'altra divisione.</li><li>Ecco perché la porzione di stringa dopo la seconda virgola è ammassata insieme in un solo elemento nella lista restituita.</li></ul><p>Spero che tu abbia capito come funzionano il metodo <code>split()</code> e gli argomenti <code>sep</code> e <code>maxsplit</code>.</p><h2 id="sintassi-del-metodo-join-di-python"><strong>Sintassi del Metodo <code>join()</code> di Python</strong></h2><p>Ora che sai come dividere una stringa in sottostringhe, è il momento di imparare come usare il metodo <code>join()</code> per formare una stringa a partire dalle sottostringhe.</p><p>La sintassi del metodo di Python <code>join()</code> è:</p><pre><code class="language-python">&lt;sep&gt;.join(&lt;iterable&gt;)</code></pre><p>Qui,</p><ul><li><code>&lt;iterable&gt;</code> è un qualsiasi elemento iterabile di Python che contenga delle sottostringhe, ad esempio, una lista o una tupla, e</li><li><code>&lt;sep&gt;</code> è il separatore che vorresti usare per unire le stringhe.</li></ul><blockquote><code>join()</code> &nbsp;<code>&lt;iterable&gt;</code> &nbsp;<code>&lt;sep&gt;</code></blockquote><p>▶ Ed è il momento per gli esempi.</p><h2 id="esempi-del-metodo-join-di-python"><strong>Esempi del Metodo <code>join()</code> di Python</strong></h2><p>Nella sezione precedente sul metodo <code>split()</code>, hai diviso <code>my_string</code> in una lista sulle occorrenze delle virgole. Chiamiamo la lista <code>my_list</code>.</p><p>Ora formerai una stringa usando il metodo <code>join()</code> per mettere insieme gli elementi nella lista restituita. Gli elementi in <code>my_list</code> sono tutti nomi di frutti.</p><pre><code class="language-python">my_list = my_string.split(",")

# dopo che my_string è stata divisa my_list è:
['Apples', 'Oranges', 'Pears', 'Bananas', 'Berries']

</code></pre><p>📑 Nota che il separatore per unire deve essere specificato come <em>stringa</em>. Incorrerai in errori di sintassi se non lo fai, come mostrato in basso.</p><pre><code class="language-python">,.join(my_list)</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/10/image-49.png" class="kg-image" alt="image-49" width="600" height="400" loading="lazy"></figure><p>▶ Per unire gli elementi in <code>my_list</code> usando una virgola come separatore, usa <code>","</code> non <code>,</code>. Questo viene mostrato nella porzione di codice qui in basso.</p><pre><code class="language-python">", ".join(my_list)</code></pre><p>La riga di codice in alto unisce gli elementi in <code>my_list</code> usando una virgola seguita da uno spazio come separatore.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/10/image-53.png" class="kg-image" alt="image-53" width="600" height="400" loading="lazy"></figure><p>Puoi specificare un qualunque separatore a tua scelta. Questa volta, userai 3 trattini bassi (<code>___</code>) per unire gli elementi in <code>my_list</code>.</p><pre><code class="language-python">"___".join(my_list)</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/10/image-54.png" class="kg-image" alt="image-54" width="600" height="400" loading="lazy"></figure><p>Gli elementi in <code>my_list</code> adesso sono stati uniti in una sola stringa, e sono separati l'uno dall'altro da <code>___</code>.</p><p>E adesso sai come formare una stringa di Python mettendo insieme delle sottostringhe usando il metodo <code>join()</code>.</p><h2 id="conclusione"><strong>Conclusione</strong></h2><p>In questo tutorial, hai imparato che:</p><ul><li><code>&lt;string&gt;.split(sep, maxsplit)</code> divide <code>&lt;string&gt;</code> sulle occorrenze di <code>sep</code>, un numero di volte uguale a <code>maxsplit</code>,</li><li><code>&lt;sep&gt;.join(&lt;iterable&gt;)</code> unisce le sottostringhe in <code>&lt;iterable&gt;</code> usando <code>&lt;sep&gt;</code> come separatore.</li></ul><p>Spero che tu abbia trovato utile questo tutorial. Buona programmazione!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Google Colaboratory – Come Eseguire Codice Python in Google Drive ]]>
                </title>
                <description>
                    <![CDATA[ Google Colaboratory ("Colab") è un blocco note (come Jupyter Notebook) da cui puoi eseguire del codice Python nel tuo Google Drive. Puoi scrivere del testo, scrivere codice, eseguire del codice e vederne l'output - tutto all'interno dello stesso blocco note. Benefici di Google Colab Condividere blocchi note è facile tanto ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/google-colaboratory-come-eseguire-codice-python-in-google-drive/</link>
                <guid isPermaLink="false">6574968c101fbf03fab50128</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Paola Rosati ]]>
                </dc:creator>
                <pubDate>Tue, 27 Feb 2024 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/12/pexels-sevenstorm-juhaszimrus-425133.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/google-colaboratory-python-code-in-your-google-drive/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Google Colaboratory – How to Run Python Code in Your Google Drive</a>
      </p><p>Google Colaboratory ("Colab") è un blocco note (come Jupyter Notebook) da cui puoi eseguire del codice Python nel tuo Google Drive.</p><p>Puoi scrivere del testo, scrivere codice, eseguire del codice e vederne l'output - tutto all'interno dello stesso blocco note.</p><h2 id="benefici-di-google-colab"><strong>Benefici di Google Colab</strong></h2><p>Condividere blocchi note è facile tanto quanto condividere un qualsiasi documento Google. Puoi anche scaricare l'app ed eseguire il codice dal tuo telefono.</p><p>Puoi usare il potente e popolare linguaggio Python all'interno del tuo Google Drive, e l'installazione richiederà meno di cinque minuti.</p><p>Poiché Python viene eseguito su un server (e non sul tuo browser locale o sul tuo computer locale) puoi usarlo facilmente per interagire con un database online e analizzare i dati in situazioni in cui hai bisogno di mantenere il codice privato.</p><h2 id="come-aggiungere-colab-al-tuo-google-drive"><strong>Come Aggiungere Colab al Tuo Google Drive</strong></h2><ol><li>Sul tuo computer, nel tuo Google Drive, clicca il bottone "+ Nuovo".</li></ol><figure class="kg-card kg-image-card"><img src="https://lh4.googleusercontent.com/us0e4vwVAXFLV1Zv_07RINIVP3uMish_sPWjumo8Y8LYBjbBqa5fq7Ioxw7KUmbIGGN18mbUcu16EhLpmWreOsqpHqnwyVt6bFvTKTg0B-FdclBXIumNAGSHm8MRQmuYKCMz7Q9_" class="kg-image" alt="us0e4vwVAXFLV1Zv_07RINIVP3uMish_sPWjumo8Y8LYBjbBqa5fq7Ioxw7KUmbIGGN18mbUcu16EhLpmWreOsqpHqnwyVt6bFvTKTg0B-FdclBXIumNAGSHm8MRQmuYKCMz7Q9_" width="129" height="74" loading="lazy"></figure><p><br></p><p>2. &nbsp;Clicca “Altro”, poi clicca "Collega altre applicazioni" in fondo al nuovo menu.</p><figure class="kg-card kg-image-card"><img src="https://lh6.googleusercontent.com/kWfy4KkQcuTYxHO0CGiUVsf2PTFRrKEYQzQM1BffRAaarwnIlg3a_zgtD71_NqSzqGnvqRqfTPUi793vgPr6dzNJ6WmhHn9oPePJSaK9h1RNqR5KvwHg2UVj9sYIMBTvizjWtJ_V" class="kg-image" alt="kWfy4KkQcuTYxHO0CGiUVsf2PTFRrKEYQzQM1BffRAaarwnIlg3a_zgtD71_NqSzqGnvqRqfTPUi793vgPr6dzNJ6WmhHn9oPePJSaK9h1RNqR5KvwHg2UVj9sYIMBTvizjWtJ_V" width="583" height="601" loading="lazy"></figure><p><br>3. &nbsp;Nel Google Workspace Marketplace, digita "colab" nella barra di ricerca.</p><figure class="kg-card kg-image-card"><img src="https://lh5.googleusercontent.com/dLHP0JPcfH2VIFFc_cuJeZZ7Kz5UVKGpVxAY_pQNJoGfuBw8Jg6KoLJ_UCETRmgbxmIE8A31VA3BN9KTwXD4hD6CAfHtTIKgNT-vUSVYLK8J_-I-G0YUgVklUB5zQjBKiozuloih" class="kg-image" alt="dLHP0JPcfH2VIFFc_cuJeZZ7Kz5UVKGpVxAY_pQNJoGfuBw8Jg6KoLJ_UCETRmgbxmIE8A31VA3BN9KTwXD4hD6CAfHtTIKgNT-vUSVYLK8J_-I-G0YUgVklUB5zQjBKiozuloih" width="963" height="444" loading="lazy"></figure><p>4. &nbsp;Clicca per aggiungere Google Colaboratory.</p><figure class="kg-card kg-image-card"><img src="https://lh6.googleusercontent.com/BShlQ_Hnj829h2ZNUxCJTolVFTYb7EeBoV7TJyqH13pwiS6YZDX95bxVI0RC3Dqp5wl2Mo-B4r8ezHkWFOeRJxFGGuoY9eQYb2ANtEx0nPCxU9aaZQrqEJj_hbePrYTGheWjr0tM" class="kg-image" alt="BShlQ_Hnj829h2ZNUxCJTolVFTYb7EeBoV7TJyqH13pwiS6YZDX95bxVI0RC3Dqp5wl2Mo-B4r8ezHkWFOeRJxFGGuoY9eQYb2ANtEx0nPCxU9aaZQrqEJj_hbePrYTGheWjr0tM" width="965" height="412" loading="lazy"></figure><p><br>5. &nbsp;Ora hai Colab nella &nbsp;lista di applicazioni disponibili.<br></p><figure class="kg-card kg-image-card"><img src="https://lh3.googleusercontent.com/Xxwg1qNNyJQDcxrLlmOILOIGhfVQS1jQpTqjbOym7MqhCoVSdRVu_5EdVfrzgiRp70F01k0AUKZo0AQlmGrO3IgGJD-Dpx77jFhWfLXTW0m3ZfYXz5AMoK9m9BhSG-VhK9D-uX_I" class="kg-image" alt="Xxwg1qNNyJQDcxrLlmOILOIGhfVQS1jQpTqjbOym7MqhCoVSdRVu_5EdVfrzgiRp70F01k0AUKZo0AQlmGrO3IgGJD-Dpx77jFhWfLXTW0m3ZfYXz5AMoK9m9BhSG-VhK9D-uX_I" width="507" height="341" loading="lazy"></figure><h2 id="come-usare-google-colab"><br>Come Usare<strong> Google Colab</strong></h2><p>Ora quando clicchi sul bottone "+ Nuovo" e clicchi "Altro" (in fondo alla prima lista) vedrai "Google Colaboratory" nella lista seguente.</p><p>Cliccaci per aprire un nuovo blocco note Colab. Dai un nome al tuo blocco note, come faresti con qualsiasi documento o foglio Google. Questo blocco note è in modalità scura:</p><figure class="kg-card kg-image-card"><img src="https://lh3.googleusercontent.com/ttxQIV3tGb3kaiMlu-ix-J0939nbXX7Xx_Ke5UMcBnT_mRNVcNfJevAbMWm8nhIYbCM6zNjSMY_d3CwqIi-euqnf8HSAZlLG5oZST84kDnw9JpxKnLNkj-SioTtL_xhYHfiSgS1c" class="kg-image" alt="ttxQIV3tGb3kaiMlu-ix-J0939nbXX7Xx_Ke5UMcBnT_mRNVcNfJevAbMWm8nhIYbCM6zNjSMY_d3CwqIi-euqnf8HSAZlLG5oZST84kDnw9JpxKnLNkj-SioTtL_xhYHfiSgS1c" width="781" height="357" loading="lazy"></figure><p>Digita un semplice comando come test. Per eseguire il codice in qualsiasi cella, puoi cliccare il bottone "esegui" a sinistra della cella di codice (somiglia ad un bottone "play" con un triangolo all'interno di un cerchio) o puoi cliccare [shift] + [invio]. L'output apparirà appena sotto la cella di codice.</p><figure class="kg-card kg-image-card"><img src="https://lh4.googleusercontent.com/DCX2F45Bewre17_E27tFm0liy5l155iNB7vt4ohbFhCS7QUpwc47JHJ0ipkgJU6AcfKDcmLY8u2q8N-JHdBl1BwkTeM5-BQ250YbH-UwEKiLC8D6gjuo96vGcwwSFPJi0fxqbSkS" class="kg-image" alt="DCX2F45Bewre17_E27tFm0liy5l155iNB7vt4ohbFhCS7QUpwc47JHJ0ipkgJU6AcfKDcmLY8u2q8N-JHdBl1BwkTeM5-BQ250YbH-UwEKiLC8D6gjuo96vGcwwSFPJi0fxqbSkS" width="588" height="300" loading="lazy"></figure><p>Puoi importare molte librerie popolari senza bisogno di installarle prima.</p><figure class="kg-card kg-image-card"><img src="https://lh6.googleusercontent.com/Ya_VZMKr0gAEs-UJq7BZa-gnjQ3_AQSAq1YK-eCNQBMgibEeFuAl9BwYZvSrhOyC518v5bjJD9gIGs7WQoI87S3cy_cbJdzIScUvYP8pxpTHEhbbRwSLZwX5qojvn7MQPEfOu0F6" class="kg-image" alt="Ya_VZMKr0gAEs-UJq7BZa-gnjQ3_AQSAq1YK-eCNQBMgibEeFuAl9BwYZvSrhOyC518v5bjJD9gIGs7WQoI87S3cy_cbJdzIScUvYP8pxpTHEhbbRwSLZwX5qojvn7MQPEfOu0F6" width="776" height="204" loading="lazy"></figure><p>Se importi una libreria o definisci una funzione in una cella, essa sarà ancora disponibile nelle altre celle per almeno qualche minuto. Il runtime si disconnetterà se stai 30 minuti senza eseguire nessuna cella o se tieni il blocco note aperto per 12 ore.</p><h2 id="esplora-colab"><strong>Esplora Colab</strong></h2><p>Se stavi seguendo passo passo e adesso hai Google Colaboratory installato, sei pronto per sviluppare i tuoi progetti.</p><p>Se clicchi sul simbolo “<strong><strong>&lt; &gt;</strong></strong>” in basso a sinistra del blocco note, troverai degli esempi di codice che puoi usare. Inoltre, Google possiede molte risorse per te, alcune delle quali si trovano su <a href="https://colab.research.google.com/">https://colab.research.google.com/</a> (chiudi semplicemente la finestra pop-up che appare).</p><p>A freeCodeCamp stiamo mettendo su <a href="https://www.freecodecamp.org/learn/college-algebra-with-python/">un curriculum per mostrarti come usare Python per risolvere problemi matematici</a>. Adesso hai gli strumenti a portata di mano. Buona programmazione!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Break e Continue in Python – Come Passare alla Funzione Successiva ]]>
                </title>
                <description>
                    <![CDATA[ Quando hai bisogno di saltare una parte del loop in corso o di uscire completamente dal loop, puoi utilizzare le istruzioni break e continue. In questo articolo ti spiegherò come utilizzare le istruzioni break e continue  nel tuo codice Python. Come utilizzare l'istruzione break in Python È possibile utilizzare ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/break-e-continue-in-python-come-passare-alla-funzione-successiva/</link>
                <guid isPermaLink="false">65db58736ff0440405a971d4</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Chiara Tartaglia ]]>
                </dc:creator>
                <pubDate>Mon, 26 Feb 2024 07:51:50 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2024/02/thisisengineering-raeng-uyfohHiTxho-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/python-break-and-python-continue-how-to-skip-to-the-next-function/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Python Break and Python Continue – How to Skip to the Next Function</a>
      </p><p>Quando hai bisogno di saltare una parte del loop in corso o di uscire completamente dal loop, puoi utilizzare le istruzioni <code>break</code> e <code>continue</code>.</p><p>In questo articolo ti spiegherò come utilizzare le istruzioni <code>break</code> e <code>continue</code> nel tuo codice Python.</p><h2 id="come-utilizzare-l-istruzione-break-in-python"><strong>Come utilizzare l'istruzione break in Python</strong></h2><p>È possibile utilizzare l’istruzione <code>break</code> per uscire da un loop <code>for</code> o <code>while</code> e passare alla sezione di codice successiva.</p><p>Questo primo esempio mostra un loop for che percorre ogni lettera della parola freeCodeCamp e la visualizza nella console.</p><pre><code class="language-py">for letter in 'freeCodeCamp':
    print('letter :', letter)</code></pre><p>Ecco cosa viene visualizzato nella console:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-13-at-7.46.39-PM.png" class="kg-image" alt="Screen-Shot-2022-03-13-at-7.46.39-PM" width="600" height="400" loading="lazy"></figure><p>Se vogliamo interrompere il loop alla lettera "o", possiamo utilizzare un'istruzione <code>if</code> seguita da un’istruzione <code>break</code>.</p><pre><code class="language-py">for letter in 'freeCodeCamp':
    if letter == "o":
        break
    print('letter :', letter)</code></pre><p>Ecco cosa viene visualizzato nella console:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-13-at-7.49.15-PM.png" class="kg-image" alt="Screen-Shot-2022-03-13-at-7.49.15-PM" width="600" height="400" loading="lazy"></figure><p>Nel prossimo esempio utilizziamo un loop <code>while</code> per incrementare <code>num</code> fintanto che <code>num</code> è inferiore a 20.</p><pre><code class="language-py">num = 5
while num &lt; 20:
    print('Current number :', num)
    num = num + 1</code></pre><p>Ecco cosa viene visualizzato nella console:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-13-at-7.54.17-PM.png" class="kg-image" alt="Screen-Shot-2022-03-13-at-7.54.17-PM" width="600" height="400" loading="lazy"></figure><p>Possiamo poi aggiungere una condizione all’interno del loop <code>while</code> che ordina di uscire dal loop se <code>num</code> è uguale a 9.</p><pre><code class="language-py">num = 5
while num &lt; 20:
    print('Current number :', num)
    num = num + 1
    if num == 9:
        break</code></pre><p>Ecco cosa viene visualizzato nella console:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-13-at-7.55.38-PM.png" class="kg-image" alt="Screen-Shot-2022-03-13-at-7.55.38-PM" width="600" height="400" loading="lazy"></figure><h2 id="come-utilizzare-l-istruzione-continue-in-python"><strong>Come utilizzare l'istruzione continue in Python</strong></h2><p>È possibile utilizzare l’istruzione <code>continue</code> per saltare l’iterazione in corso di un loop <code>for</code> o <code>while</code> e passare all’iterazione successiva.</p><p>In questo esempio stiamo eseguendo un loop su una stringa che contiene il mio nome.</p><pre><code class="language-py">for letter in "Jessica":</code></pre><p>Dentro al loop <code>for</code>, inseriamo una condizione che ordina di saltare l’iterazione in corso e passare alla successiva se la lettera presa in considerazione è uguale a "i".</p><pre><code class="language-py">  if letter == "i":
        continue</code></pre><p>Ecco come appare il codice completo:</p><pre><code class="language-py">for letter in "Jessica":
    if letter == "i":
        continue
    print(letter)</code></pre><p>Ed ecco cosa viene visualizzato nella console:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-13-at-9.22.33-PM.png" class="kg-image" alt="Screen-Shot-2022-03-13-at-9.22.33-PM" width="600" height="400" loading="lazy"></figure><p>Nota che la lettera "i" non è stata visualizzata nella console poiché l’istruzione <code>continue</code> ha fatto saltare quell’iterazione.</p><p>Nel prossimo esempio visualizzeremo numeri con incrementi di 10 utilizzando un loop <code>while</code>. Aggiungeremo poi una condizione nel loop che ordini di saltare l’iterazione e passare alla successiva se <code>num</code> è uguale a 50.</p><pre><code class="language-py">num = 10
while num &lt; 100:
    num = num + 10
    if num == 50:
        continue
    print("Current num: ", num)</code></pre><p>Ecco cosa viene visualizzato nella console:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-13-at-9.35.33-PM.png" class="kg-image" alt="Screen-Shot-2022-03-13-at-9.35.33-PM" width="600" height="400" loading="lazy"></figure><p>Come si può vedere, il numero 50 non viene visualizzato nella console a causa dell’istruzione <code>continue</code> contenuta all’interno dell’istruzione <code>if</code>.</p><h2 id="conclusione"><strong>Conclusione</strong></h2><p>Le istruzione <code>break</code> e <code>continue</code> in Python sono utilizzate per saltare parti del loop in corso o per uscire completamente dal loop.</p><p>È possibile utilizzare l’istruzione <code>break</code> quando si vuole uscire completamente da un loop <code>for</code> o <code>while</code> e passare alla sezione di codice successiva.</p><p>È possibile utilizzare l’istruzione <code>continue</code> per saltare l’iterazione in corso del loop <code>for</code> o <code>while</code> e passare all’iterazione successiva dello stesso loop.</p><p>Spero che questo articolo ti sia piaciuto e ti auguro buona fortuna per il tuo viaggio con Python.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Come Installare Python su Windows ]]>
                </title>
                <description>
                    <![CDATA[ Prima di provare ad eseguire qualsiasi programma in Python sul tuo sistema operativo Windows, dovrai controllare di avere Python installato e aggiunto correttamente alla variabile di ambiente path. In questo articolo, ti mostrerò come puoi controllare di avere Python installato sul tuo sistema operativo. Se non lo hai, allora ti ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/come-installare-python-su-windows/</link>
                <guid isPermaLink="false">65040ecbca56f103fd49cf33</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Paola Rosati ]]>
                </dc:creator>
                <pubDate>Thu, 09 Nov 2023 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/11/Artboard-1-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/how-to-install-python-in-windows-operating-system/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Install Python on Windows</a>
      </p><p>Prima di provare ad eseguire qualsiasi programma in Python sul tuo sistema operativo Windows, dovrai controllare di avere Python installato e aggiunto correttamente alla variabile di ambiente path.</p><p>In questo articolo, ti mostrerò come puoi controllare di avere Python installato sul tuo sistema operativo. Se non lo hai, allora ti mostrerò anche come puoi installarlo correttamente su Windows.</p><p>In questo articolo, userò Windows 11 poiché è l'ultima versione di Microsoft Windows. Ma lo stesso metodo è applicabile ad altre versioni di Windows. Dunque, senza indugiare oltre, cominciamo.</p><h2 id="come-controllare-se-hai-python-installato-sul-tuo-sistema-operativo-windows"><strong>Come Controllare se Hai Python Installato sul Tuo Sistema Operativo Windows</strong></h2><p>Apri il <strong>CMD</strong> o la <strong>Powershell</strong> e controlla la versione di Python usando questo comando:</p><pre><code class="language-powershell">python --version
</code></pre><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-150253.png" class="kg-image" alt="Screenshot-2022-02-18-150253" width="600" height="400" loading="lazy"></figure><p>Se ottieni la versione di Python nell'output come vedi in alto, allora il tuo computer è perfettamente in grado di eseguire qualsiasi programma di Python. Nel tuo caso, la versione di Python potrebbe essere diversa.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/2022-02-18-11-45-00.00_00_34_07.Still001.jpg" class="kg-image" alt="2022-02-18-11-45-00.00_00_34_07.Still001" width="600" height="400" loading="lazy"></figure><p>Ma se ottieni il tipo di output che vedi in alto, potrebbe significare una di queste cose:</p><ol><li>Non avevi Python installato sul tuo computer, oppure</li><li>La cartella di Python non è stata aggiunta al percorso delle <strong>Variabili di Ambiente</strong>.</li></ol><p>Per ora fammi dare per scontato che tu non abbia Python installato sul tuo computer. Più avanti in questo articolo ti spiegherò anche come puoi aggiungere la cartella di Python al percorso delle Variabili d'Ambiente.</p><h2 id="come-installare-python-su-windows"><strong>Come Installare Python su Windows</strong></h2><p>Prima di tutto, dobbiamo andare sul <a href="https://www.python.org/">sito ufficiale di Python</a>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-150905.png" class="kg-image" alt="Screenshot-2022-02-18-150905" width="600" height="400" loading="lazy"></figure><p>Clicca sulla sezione <strong><strong>Downloads</strong></strong>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-151036.png" class="kg-image" alt="Screenshot-2022-02-18-151036" width="600" height="400" loading="lazy"></figure><p>Qui otterrai l'ultima versione. Clicca semplicemente su Download <code>Python 3.10.2</code>. Nel momento in cui stai leggendo questo articolo, Python potrebbe essere stato aggiornato, nel qual caso la versione sarebbe diversa. Semplicemente scarica la versione che ti mostra.</p><p>Tieni a mente che qui ti mostrerà sempre l'ultima versione di Python in alto.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-151239.png" class="kg-image" alt="Screenshot-2022-02-18-151239" width="600" height="400" loading="lazy"></figure><p>Dopo aver scaricato il file, otterremo un file eseguibile come questo. Fai semplicemente doppio click su quel file e il wizard di installazione si aprirà.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/02/06.png" class="kg-image" alt="06" width="600" height="400" loading="lazy"></figure><p>Clicca su <code>Customize installation</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/02/07.png" class="kg-image" alt="07" width="600" height="400" loading="lazy"></figure><p>Assicurati di spuntare tutte le caselle, come in alto. Poi clicca su <code>Next</code>.</p><p>Poi vedrai lo screen in basso. Se vuoi, puoi spuntare tutte le caselle. Non ho bisogno del debugging dei simboli e del debug dei binari. Per questo motivo, non spunterò le ultime due caselle.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/02/08.png" class="kg-image" alt="08" width="600" height="400" loading="lazy"></figure><p>Ti consiglierei inoltre di non cambiare la posizione per l'installazione. Ricorda dove lo hai installato perché potrebbe servirti in seguito. Stiamo aggiungendo Python alle variabili d'ambiente direttamente qui.</p><p>Poi clicca <code>Install</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/02/09.png" class="kg-image" alt="09" width="600" height="400" loading="lazy"></figure><p>Lascia che termini il processo di installazione...</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/02/09--1-.png" class="kg-image" alt="09--1-" width="600" height="400" loading="lazy"></figure><p>Se ottieni questo tipo di suggerimento per disabilitare il limite di lunghezza del percorso, clicca semplicemente su quella casella. Disabiliterà il limite di lunghezza del percorso rimuovendo la limitazione sulla variabile MAX_PATH.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/05/Fahim-article-image.png" class="kg-image" alt="Fahim-article-image" width="600" height="400" loading="lazy"></figure><p>Questo cambiamento non romperà nulla, né apporterà modifiche negative. Permetterà solamente a Python di usare nomi di percorso lunghi. È consigliato disabilitare il limite di lunghezza del percorso.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/02/11-2.png" class="kg-image" alt="11-2" width="600" height="400" loading="lazy"></figure><p>L'installazione è terminata con successo.</p><h2 id="come-controllare-la-versione-di-python"><strong>Come Controllare la Versione di Python</strong></h2><p>Adesso dobbiamo controllare di nuovo se Python sia stato installato e aggiunto con successo al percorso delle variabili di ambiente oppure no.</p><p>Per controllarlo, dobbiamo aprire il <strong>CMD </strong>o la <strong>Powershell</strong>. Poi dobbiamo usare il seguente comando:</p><pre><code class="language-powershell">python --version
</code></pre><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-152724.png" class="kg-image" alt="Screenshot-2022-02-18-152724" width="600" height="400" loading="lazy"></figure><p>Python è stato installato con successo e anche il percorso è stato aggiunto tra le variabili d'ambiente! </p><h2 id="come-controllare-il-percorso-delle-variabili-d-ambiente"><strong>Come Controllare il Percorso delle Variabili d'Ambiente</strong></h2><p>Se vuoi controllare il percorso delle variabili manualmente allora devi aprire le <code>Impostazioni di sistema avanzate</code>. Puoi cercare <code>Impostazioni di sistema avanzate</code>, oppure puoi aprirle dal <strong>Pannello di Controllo</strong>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-152934.png" class="kg-image" alt="Screenshot-2022-02-18-152934" width="600" height="400" loading="lazy"></figure><p>Se le cerchi usando le parole chiave <code>Impostazioni di sistema avanzate</code>, lo otterrai direttamente in questo modo.</p><p>Se vuoi aprirle dal <strong>Pannello di Controllo</strong> allora, prima di tutto, devi aprire il pannello di controllo.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-153056.png" class="kg-image" alt="Screenshot-2022-02-18-153056" width="600" height="400" loading="lazy"></figure><p>Vai su <code>Sistema e Sicurezza</code>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-153217.png" class="kg-image" alt="Screenshot-2022-02-18-153217" width="600" height="400" loading="lazy"></figure><p>Clicca su <code>Sistema</code>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-153311.png" class="kg-image" alt="Screenshot-2022-02-18-153311" width="600" height="400" loading="lazy"></figure><p>Da qui, clicca su <code>Impostazioni di sistema avanzate</code>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-153400.png" class="kg-image" alt="Screenshot-2022-02-18-153400" width="600" height="400" loading="lazy"></figure><p>Clicca su <code>Variabili d'ambiente</code>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-153439.png" class="kg-image" alt="Screenshot-2022-02-18-153439" width="600" height="400" loading="lazy"></figure><p>Clicca su <code>Path</code> e poi clicca <code>Modifica</code>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-153531.png" class="kg-image" alt="Screenshot-2022-02-18-153531" width="600" height="400" loading="lazy"></figure><p>Vedrai che la cartella radice di <strong>Python310 </strong>e le <strong>cartelle degli script</strong> di Python310 sono state già aggiunte durante il processo di installazione, poiché abbiamo spuntato la casella per farlo durante l'installazione.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-18-153614.png" class="kg-image" alt="Screenshot-2022-02-18-153614" width="600" height="400" loading="lazy"></figure><p>Se avessi voluto farlo manualmente allora avresti dovuto copiare e incollare le due cartelle qui cliccando su <code>Nuovo</code> e incollando le due cartelle nelle due caselle bianche (una nuova casella si apre ogni volta che clicchi su <code>Nuovo</code>). Poi clicca semplicemente su <code>OK</code> su tutte le caselle aperte e chiudi tutte le finestre aperte.</p><p>Ho fatto anche un video dove mostro tutti i processi menzionati in alto. Se vuoi, puoi darci un'occhiata <a href="https://youtu.be/whywQfFdBmo">qui</a>.</p><h2 id="conclusione"><strong>Conclusione</strong></h2><p>Grazie per aver letto l'intero articolo. Se ti può essere di aiuto puoi anche dare un'occhiata ai miei altri articoli su <a href="https://www.freecodecamp.org/news/author/fahimbinamin/">freeCodeCamp</a>.</p><p>Se vuoi metterti in contatto con me, puoi farlo usando <a href="https://twitter.com/Fahim_FBA">Twitter</a>, <a href="https://www.linkedin.com/in/fahimfba/">LinkedIn</a>, e <a href="https://github.com/FahimFBA">GitHub</a>.</p><p>Puoi anche <a href="https://www.youtube.com/@FahimAmin?sub_confirmation=1">ISCRIVERTI al mio canale di YouTube</a> (Code With FahimFBA) se vuoi imparare diversi tipi di linguaggi di programmazione con molti esempi pratici pubblicati regolarmente.</p><p>Se vuoi dare un'occhiata ai miei highlights, puoi farlo sulla mia <a href="https://www.polywork.com/fahimbinamin">timeline Polywork</a>.</p><p>Puoi anche <a href="https://fahimbinamin.com/">visitare il mio sito</a> per saperne di più su di me e sulle cose su cui sto lavorando.</p><p>Grazie mille!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Come Usare PostgreSQL in Python ]]>
                </title>
                <description>
                    <![CDATA[ Ci sono molti e diversi tipi di database in uso oggi. Abbiamo database centralizzati, database commerciali, database cloud, database distribuiti, database end-user, database NoSQL, database relazionali, e molti altri. Questo articolo si concentrerà su un esempio di database relazionale (PostgreSQL) e su come richiedere dati da esso. Altri esempi di ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/come-usare-postgresql-in-python/</link>
                <guid isPermaLink="false">64e08690bd4e25040221cd01</guid>
                
                    <category>
                        <![CDATA[ Postgres ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Paola Rosati ]]>
                </dc:creator>
                <pubDate>Wed, 13 Sep 2023 14:36:39 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/08/postgresql-in-python.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/postgresql-in-python/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Use PostgreSQL in Python</a>
      </p><p>Ci sono molti e diversi tipi di database in uso oggi. Abbiamo database centralizzati, database commerciali, database cloud, database distribuiti, database end-user, database NoSQL, database relazionali, e molti altri.<br><br>Questo articolo si concentrerà su un esempio di database relazionale (PostgreSQL) e su come richiedere dati da esso. Altri esempi di database relazionali includono MySQL, MariaDB e SQLite.</p><p>In questo tutorial, imparerai come installare, connettere e infine eseguire query su un database PostgreSQL con Python.</p><p>Per iniziare, partiamo con calma imparando qualcosina in più su PostgreSQL.</p><h2 id="che-cos-postgresql"><strong>Che Cos'è PostgreSQL?</strong></h2><p>PostgreSQL è uno dei più conosciuti database relazionali open-source. È usato da sviluppatori e aziende di qualsiasi dimensione in tutto il mondo.</p><p>Per quanto riguarda la sua popolarità globale, PostgreSQL è stato <a href="https://db-engines.com/en/ranking">classificato quarto</a> da DB-Engines, e la sua popolarità è in crescita. Ciò non deve sorprendere, considerando quante applicazioni web e mobile, così come strumenti analitici, usano i database PostgreSQL.</p><p>PostgreSQL possiede anche un robusto ecosistema con una grandissima varietà di add-on ed estensioni che funzionano bene con il database principale. Per queste ragioni, PostgreSQL è un'opzione fantastica sia che tu voglia creare una tua soluzione di database personalizzata, sia che tu abbia bisogno di un database commerciale o analitico.</p><p>Adesso che sai che c0s'è PostgreSQL, parliamo di come connettersi al database usando Python.</p><h2 id="per-iniziare"><strong>Per Iniziare</strong></h2><p>Dobbiamo usare una libreria connettore per database per connetterci all'istanza di un database PostgreSQL dal nostro script di Python. Possiamo scegliere da una gamma di alternative in Python, ma <a href="https://www.psycopg.org/docs/">Psycopg2</a> è la più conosciuta e più usata.</p><p>Ci sono librerie alternative scritte interamente in Python, come <a href="https://github.com/tlocke/pg8000">pg8000</a> e <a href="https://github.com/python-postgres/fe">py-postgresql</a>, ma qui useremo Psycopg2.</p><h3 id="che-cos-psycopg2"><strong>Che cos'è Psycopg2?</strong></h3><p>La libreria Psycopg2 usa il linguaggio di programmazione C come wrapper della libreria di PostgreSQL <a href="https://www.postgresql.org/docs/current/libpq.html">libpq</a> per supportare gli standard di Python DB API 2.0. L'implementazione in C di Psycopg2 la rende incredibilmente veloce ed efficiente.</p><p>Usando una query SQL, possiamo utilizzare Psycopg2 per ottenere una o più righe dal database. Con questa libreria, possiamo anche inserire dati all'interno del database usando una varietà di metodi di inserimento, singoli o di gruppo.</p><p>La libreria è come SQL (Structured Query Language) e compie tutti i lavori e le operazioni che un linguaggio di query può fare. Gestisce sia Unicode che Python3, e include la thread safety (la stessa connessione è condivisa da molteplici thread).</p><p>È fatta per eseguire programmi altamente multi-thread, che producono e cancellano frequentemente molti cursori e compiono molti INSERT and UPDATE simultaneamente. Le funzionalità di Psycopg2 includono cursori dal lato client e dal lato server, comunicazione asincrona, e notifiche.</p><h2 id="come-installare-psycopg2"><strong>Come Installare Psycopg2</strong></h2><p>Dobbiamo prima installare Pyscopg2 per poterlo usare. Possiamo installarlo dal terminale o dal prompt dei comandi usando <code>pip</code>.</p><pre><code class="language-python">#installazione

pip install psycopg2
pip3 install psycopg2</code></pre><p>Se decidi di installare anche la libreria connettore in un ambiente virtuale, puoi farlo usando questo codice:</p><pre><code class="language-python">virtualenv env &amp;&amp; source env/bin/activate
pip install psycopg2-binary</code></pre><p>La libreria Psycopg2 e tutte le sue dipendenze verranno installate nel nostro ambiente virtuale di Python con queste righe di codice.</p><p>Abbiamo installato il nostro connettore, quindi iniziamo a scrivere alcune query.</p><h2 id="come-interrogare-postgresql-usando-python"><strong>Come Interrogare PostgreSQL usando Python</strong></h2><p>Prima di tutto, dovrai creare un nuovo file e chiamarlo come preferisci. Poi aprilo nel tuo IDE e inizia a scrivere il codice.</p><p>La prima cosa da fare è importare la libreria (questo è molto importante). Useremo due oggetti di Pyscogp2:</p><ul><li><strong>Oggetto connessione</strong>: la connessione a un'istanza di un database PostgreSQL è gestita da un oggetto connessione. Incapsula la sessione di un database, creata usando la funzione <code>connect()</code>.</li><li><strong>Oggetto cursore</strong>: l'oggetto cursore rende possibile l'esecuzione dei comandi PostgreSQL per gli script di Python durante la sessione di un database. La connessione genera dei cursori, dopodiché il metodo <code>cursor()</code> li lega permanentemente alla connessione. Tutti i comandi sono effettuati all'interno della struttura della sessione del database racchiusa nella connessione.</li></ul><pre><code class="language-python">import psycopg2

conn = psycopg2.connect(database="db_name",
                        host="db_host",
                        user="db_user",
                        password="db_pass",
                        port="db_port")</code></pre><p>Dobbiamo specificare questi argomenti per poterci connettere al database. Diamo una veloce occhiata a questi argomenti.</p><ul><li><strong><strong>database</strong></strong>: il nome del database a cui vogliamo avere accesso o connetterci. Nota che possiamo connetterci a un solo database con un oggetto connessione.</li><li><strong><strong>host</strong></strong>: molto probabilmente questo fa riferimento all'indirizzo IP o all'URL del server del database.</li><li><strong><strong>user</strong></strong>: come suggerisce il nome, si riferisce al nome dell'utente PostgreSQL.</li><li><strong><strong>password</strong></strong>: questa è la password associata all'utente PostgreSQL.</li><li><strong><strong>port</strong></strong>: il numero della porta del server PostgreSQL sul localhost - di solito è 5432.</li></ul><p>Se le credenziali del nostro database sono state inserite correttamente, riceveremo un oggetto connessione al database in tempo reale che possiamo usare per costruire un oggetto cursore. Possiamo proseguire ed eseguire qualsiasi query sul database e recuperare dati con l'aiuto del nostro oggetto cursore.</p><figure class="kg-card kg-code-card"><pre><code class="language-python">cursor = conn.cursor()</code></pre><figcaption>oggetto cursore</figcaption></figure><p>Scriviamo una semplice query:</p><pre><code class="language-python">cursor.execute("SELECT * FROM DB_table WHERE id = 1")</code></pre><p>Usiamo la funzione <code>execute()</code> e forniamo come parametro una stringa di query. Poi il database sarà interrogato usando la query che abbiamo inserito.</p><p>Una volta che avremo compiuto questa azione con successo, per poter recuperare dati dal database usando Pyscopg2, dobbiamo usare una di queste funzioni: <code>fetchone()</code>, <code>fetchall()</code> o <code>fetchmany()</code>.</p><h3 id="come-usare-fetchone-"><strong>Come usare <code>fetchone()</code>:</strong></h3><p>Dopo aver eseguito la query SQL, questa funzione restituirà soltanto la prima riga. È il metodo più semplice per prendere dati da un database.</p><figure class="kg-card kg-code-card"><pre><code class="language-python">#code
print(cursor.fetchone())

#output
(1, 'A-CLASS', '2018', 'Subcompact executive hatchback')</code></pre><figcaption>esempio di fetchone()</figcaption></figure><p>La funzione <code>fetchone()</code> restituisce una singola riga in forma di tupla, con le informazioni organizzate nell'ordine specificato dalle colonne fornite nella query.</p><p>Quando strutturiamo la stringa di query, è cruciale fornire l'ordine delle colonne in modo preciso per poter distinguere quali dati nella tupla corrispondono a quali colonne.</p><h3 id="come-usare-fetchall-"><strong>Come usare <code>fetchall()</code>:</strong></h3><p>La funzione <code>fetchall()</code> funziona allo stesso modo di <code>fetchone()</code> ad eccezione del fatto che non restituisce una riga sola ma tutte le righe. Quindi, in caso volessimo 20-200 righe o più, possiamo fare uso di <code>fetchall()</code>.</p><figure class="kg-card kg-code-card"><pre><code class="language-python">#code
print(cursor.fetchall())

#output
[(1, 'A-CLASS', '2018', 'Subcompact executive hatchback'),
 (2, 'C-CLASS', '2021', 'D-segment/compact executive sedan'),
 (3, 'CLA', '2019', 'Subcompact executive fastback sedan'),
 (4, 'CLS', '2018', 'E-segment/executive fastback sedan'),
 (5, 'E-CLASS', '2017', 'E-segment/executive sedan'),
 (6, 'EQE', '2022', 'All-electric E-segment fastback'),
 (7, 'EQS', '2021', 'All-electric full-size luxury liftback'),
 (8, 'S-CLASS', '2020', 'F-segment/full-size luxury sedan.'),
 (9, 'G-CLASS', '2018', 'Mid-size luxury SUV, known as the G-Wagen'),
 (10, 'GLE', '2019', 'Mid-size luxury crossover SUV')]
[...]</code></pre><figcaption>esempio di fetchall()</figcaption></figure><h3 id="come-usare-fetchmany-"><strong>Come usare <code>fetchmany()</code>:</strong></h3><p>La funzione <code>fetchmany()</code> ci permette di ottenere un certo numero di voci dal database e ci dà maggiore controllo sul numero preciso di righe che otteniamo.</p><figure class="kg-card kg-code-card"><pre><code class="language-python">#code
print(cursor.fetchmany(size=3))

#output
[(1, 'A-CLASS', '2018', 'Subcompact executive hatchback'),
 (2, 'C-CLASS', '2021', 'D-segment/compact executive sedan'),
 (3, 'CLA', '2019', 'Subcompact executive fastback sedan')]
</code></pre><figcaption>esempio di fetchmany()</figcaption></figure><p>Poiché abbiamo impostato 3 come argomento, riceviamo solamente tre righe.</p><p>Quando abbiamo finito di interrogare il nostro database dobbiamo chiudere la connessione con <code>conn.close()</code>.</p><h2 id="conclusione"><strong>Conclusione</strong></h2><p>È stato piuttosto semplice, vero? Siamo stati in grado di eseguire tutte queste operazioni da un singolo script Python e ha funzionato molto bene.</p><p>Spero che questo articolo ti sia stato utile, adesso puoi lavorare con PostgreSQL usando Python,</p><p>Per maggiori informazioni, dai un'occhiata alla <a href="https://www.psycopg.org/docs/">documentazione </a>di Psycopg2.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ I Set di Python – Come Creare Set in Python ]]>
                </title>
                <description>
                    <![CDATA[ Puoi usare i set in Python per immagazzinare una collezione di dati in una singola variabile. Tutte le strutture di dati integrate in Python, come le liste, i dizionari e le tuple, hanno delle caratteristiche distinte. Ecco alcune caratteristiche dei set in Python:  * Non sono ammessi elementi duplicati. ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/i-set-di-python-come-creare-set-in-python/</link>
                <guid isPermaLink="false">64c50e0d7194960696cf2e77</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Paola Rosati ]]>
                </dc:creator>
                <pubDate>Wed, 30 Aug 2023 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/08/kelly-sikkema--1_RZL8BGBM-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/python-set-how-to-create-sets-in-python/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Python Set – How to Create Sets in Python</a>
      </p><p>Puoi usare i set in Python per immagazzinare una collezione di dati in una singola variabile.</p><p>Tutte le strutture di dati integrate in Python, come le liste, i dizionari e le tuple, hanno delle caratteristiche distinte.</p><p>Ecco alcune caratteristiche dei set in Python:</p><ul><li>Non sono ammessi elementi duplicati. Se un elemento compare più volte, solo uno verrà riconosciuto nel set.</li><li>Gli elementi di un set sono in ordine casuale. L'ordine del set cambia ogni volta che viene usato.</li><li>Il valore degli elementi di un set non può essere modificato/cambiato una volta che il set è stato creato.</li></ul><p>In questo articolo, imparerai come creare i set. Imparerai anche come accedere, aggiungere e rimuovere elementi da un set in Python.</p><p>Concluderemo parlando di alcuni casi d'uso dei set nella programmazione e nella matematica con Python.</p><h2 id="come-creare-set-in-python"><strong>Come Creare<strong> Set in Python</strong></strong></h2><p>Usiamo le parentesi graffe per immagazzinare degli elementi in un set. Ecco come appare un set:</p><pre><code class="language-python">nomeSet = {"John", "Jane", "Doe"}

print(nomeSet)
# {'Jane', 'Doe', 'John'}</code></pre><p>Nel codice in alto, abbiamo creato un set chiamato <code>nomeSet</code>.</p><p>Noterai che quando il set viene stampato, i valori appaiono in un ordine diverso. Questa è una delle caratteristiche dei set di Python che ho menzionato prima.</p><p>Ecco un altro esempio con un elemento duplicato:</p><pre><code class="language-phython">nomeSet = {"John", "Jane", "Doe", "Jane"}

print(nomeSet)
# {'Jane', 'Doe', 'John'}</code></pre><p>Il duplicato di "Jane" è stato ignorato nell'esempio qui sopra. Questo perché gli elementi duplicati non sono ammessi.</p><h2 id="come-accedere-agli-elementi-di-un-set-in-python"><strong>Come Accedere agli Elementi di un Set in Python</strong></h2><p>Puoi usare un loop per accedere agli elementi di un set e stamparli. Non puoi usare l'indice degli elementi per avere accesso ad essi, poiché l'ordine cambia costantemente– nessun elemento mantiene il suo indice.</p><p>Ecco un esempio:</p><pre><code class="language-python">nomeSet = {"John", "Jane", "Doe"}

for nomi in nomeSet:
    print(nomi)
    # John
    # Doe
    # Jane</code></pre><p>Usiamo un loop <code>for</code> per stampare gli elementi in <code>nomeSet</code>.</p><p>Nella prossima sezione, vedrai come aggiungere gli elementi a un set.</p><h2 id="come-aggiungere-elementi-a-un-set-in-python"><strong>Come Aggiungere Elementi a un Set in Python</strong></h2><p>Puoi aggiungere un elemento a un set in Python usando il metodo <code>add()</code> con il nuovo elemento da aggiungere passato come parametro.</p><p>Ecco un esempio:</p><pre><code class="language-python">nomeSet = {"John", "Jane", "Doe"}

nomeSet.add("Ihechikara")

print(nomeSet)
# {'John', 'Ihechikara', 'Doe', 'Jane'}</code></pre><p>Abbiamo aggiunto un nuovo elemento – "Ihechikara" – al set: <code>nomeSet.add("Ihechikara")</code>.</p><p>Puoi anche aggiungere un elemento da un altro set o da altre strutture di dati (liste, dizionari, e tuple) a un set usando il metodo <code>update()</code>.</p><p>Ecco un esempio:</p><pre><code class="language-python">nomeSet = {"John", "Jane", "Doe"}

nomeSet2 = {"Jade", "Jay"}

nomeSet.update(nomeSet2)

print(nomeSet)
# {'Doe', 'Jay', 'Jane', 'Jade', 'John'}</code></pre><p>Per aggiungere i nomi da <code>nomeSet2</code> a <code>nomeSet</code>, abbiamo passato <code>nomeSet2</code> come parametro al metodo <code>update()</code>: <code>nomeSet.update(nomeSet2)</code>.</p><h2 id="come-rimuovere-elementi-da-un-set-in-python"><strong>Come Rimuovere Elementi da un Set <strong>in Python</strong></strong></h2><p>Ci sono diversi metodi che puoi usare per rimuovere elementi da un set. Diamoci un'occhiata.</p><h3 id="come-rimuovere-elementi-da-un-set-in-python-usando-il-metodo-discard-"><strong>Come Rimuovere Elementi da un Set in Python Usando il Metodo<strong> <code>discard()</code></strong></strong></h3><p>Puoi usare il metodo <code>discard()</code> per rimuovere un elemento specifico. Ecco un esempio:</p><pre><code class="language-python">nomeSet = {"John", "Jane", "Doe"}

nomeSet.discard("John")

print(nomeSet)
# {'Doe', 'Jane'}</code></pre><p>Nell'esempio in alto, "John" è stato passato come parametro al metodo <code>discard()</code> ed è stato dunque rimosso dal set.</p><h3 id="come-rimuovere-elementi-da-un-set-in-python-usando-il-metodo-remove-"><strong>Come Rimuovere Elementi da un Set in Python Usando il Metodo<strong> <code>remove()</code></strong></strong></h3><p>Il metodo <code>remove()</code> funziona allo stesso modo del metodo <code>discard()</code>.</p><pre><code class="language-python">nomeSet = {"John", "Jane", "Doe"}

nomeSet.remove("Jane")

print(nomeSet)
# {'John', 'Doe'}</code></pre><h3 id="come-svuotare-un-set-in-python-usando-il-metodo-clear-"><strong>Come Svuotare un Set in Python Usando il Metodo<strong> <code>clear()</code> </strong></strong></h3><p>Per eliminare tutti gli elementi in un set, usiamo il metodo <code>clear()</code>.</p><p>Ecco un esempio:</p><pre><code class="language-python">nomeSet = {"John", "Jane", "Doe"}

nomeSet.clear()

print(nomeSet)
# set()</code></pre><h2 id="quando-usare-i-set-in-python"><strong>Quando Usare i Set <strong>in Python</strong></strong></h2><p>In questa sezione, parleremo di due importanti casi d'uso dei set in Python.</p><p>Possiamo usare i set per rimuovere elementi duplicati in altre strutture di dati.</p><p>Possiamo anche compiere delle fantastiche operazioni matematiche come ottenere l'unione, l'intersezione, la differenza e la differenza simmetrica di due o più set.</p><h3 id="come-usare-i-set-per-rimuovere-elementi-duplicati-in-altre-strutture-di-dati"><strong>Come Usare i Set per Rimuovere Elementi Duplicati in Altre Strutture di Dati</strong></h3><p>Possiamo usare i set per liberarci di elementi duplicati in altre strutture di dati come liste e tuple.</p><p>Ciò è utile quando hai a che fare con insiemi di dati molto grandi che richiedono solo le unità individuali degli elementi e non il numero di occorrenze degli elementi.</p><p>Ecco un esempio:</p><pre><code class="language-python">listaNumeri = [2, 2, 4, 8, 9, 10, 8, 2, 5, 7, 3, 4, 7, 9]

setNumeri = set(listaNumeri)

print(setNumeri)
# {2, 3, 4, 5, 7, 8, 9, 10}</code></pre><p>Nel codice qui sopra, abbiamo creato una lista di numeri chiamata <code>listaNumeri</code> che ha molteplici occorrenze di alcuni numeri: <code>[2, 2, 4, 8, 9, 10, 8, 2, 5, 7, 3, 4, 7, 9]</code>.</p><p>Usando il metodo <code>set()</code>, abbiamo convertito la lista <code>listaNumeri</code> in un set: <code>setNumeri = set(listaNumeri)</code>.</p><p>Quando il nuovo set è stato stampato, tutti i duplicati dei numeri sono stati rimossi - ci viene restituita solo un'occorrenza di ogni numero: <code>{2, 3, 4, 5, 7, 8, 9, 10}</code>.</p><h3 id="come-compiere-operazioni-matematiche-usando-i-set-in-python"><strong>Come Compiere Operazioni Matematiche Usando i Set in Python</strong></h3><p>I set in Python sono simili agli insiemi in matematica, e possiamo ottenere vari risultati a seconda della relazione che esiste tra gli insiemi.</p><p>In questa sezione, vedrai come ottenere l'unione, l'intersezione, la differenza e la differenza simmetrica tra set in Python.</p><p>Puoi compiere tutte le operazioni in questa sezione usando più di due set. Per mantenere la cosa il più semplice possibile, useremo solo due set per ogni esempio.</p><h4 id="come-ottenere-l-unione-di-set-in-python"><strong>Come Ottenere l'Unione di Set in Python</strong></h4><p>L'unione di due set è un set con tutti gli elementi individuali che esistono in entrambi i set. Nell'unione, i duplicati vengono ignorati.</p><p>Ecco un esempio:</p><pre><code class="language-python">primoSet = {2, 3, 4, 5}

secondoSet = {1, 3, 5, 7}

print(primoSet | secondoSet)
# {1, 2, 3, 4, 5, 7}</code></pre><p>Nell'esempio in alto, abbiamo due set – <code>primoSet = {2, 3, 4, 5}</code> e <code>secondoSet = {1, 3, 5, 7}</code>.</p><p>Usando l'operatore barra verticale (<code>|</code>), siamo in grado di ottenere l'unione dei due set: <code>primoSet | secondoSet</code>.</p><p>L'unione dei set è la seguente: {1, 2, 3, 4, 5, 7}. Come puoi vedere, i due set sono stati uniti per formare un solo set senza alcun duplicato.</p><h4 id="come-ottenere-l-intersezione-di-set-in-python"><strong>Come Ottenere l'Intersezione di Set in Python</strong></h4><p>L'intersezione di due set è un set di elementi che sono comuni a entrambi i set. Nel nostro caso, è il set di elementi che compare sia in <code>primoSet</code> che in <code>secondoSet</code>.</p><p>Ecco un esempio:</p><pre><code class="language-python">primoSet = {2, 3, 4, 5}

secondoSet = {1, 3, 5, 7}

print(primoSet &amp; secondoSet)
# {3, 5}</code></pre><p>In questo esempio, stiamo usando l'operatore <code>&amp;</code> per ottenere l'intersezione tra <code>primoSet</code> e <code>secondoSet</code>: <code>primoSet &amp; secondoSet</code>.</p><p>Ci viene restituito {3, 5} perché 3 e 5 compaiono in entrambi i set.</p><h4 id="come-ottenere-la-differenza-tra-set-in-python"><strong>Come Ottenere la Differenza tra Set in Python</strong></h4><p>La differenza tra due set è un set di tutti gli elementi che esistono in un set ma non nell'altro.</p><p>Ecco un esempio:</p><pre><code class="language-python">primoSet = {2, 3, 4, 5}

secondoSet = {1, 3, 5, 7}

print(primoSet - secondoSet)
# {2, 4}</code></pre><p>Nell'esempio in alto, stiamo ottenendo un set di elementi che esiste in <code>primoSet</code> ma non in <code>secondoSet</code>.</p><p>Abbiamo usato l'operatore <code>-</code> per ottenere questo risultato: <code>primoSet - secondoSet</code>.</p><p>Il risultato dell'operazione è 2 e 4.</p><h4 id="come-ottenere-la-differenza-simmetrica-tra-set-in-python"><strong>Come Ottenere la Differenza Simmetrica tra Set in Python</strong></h4><p>La differenza simmetrica di due set è un set di elementi che esistono in uno dei due set ma non in entrambi.</p><p>Nell'ultima sezione, abbiamo avuto come risultato elementi che esistono in un set ma non nell'altro. La differenza simmetrica ha come risultato gli elementi che esistono in ciascun set ma non in entrambi.</p><pre><code class="language-python">primoSet = {2, 3, 4, 5}

secondoSet = {1, 3, 5, 7}

print(primoSet ^ secondoSet)
# {1, 2, 4, 7}</code></pre><p>Abbiamo usato l'operatore <code>^</code> per ottenere la differenza simmetrica dei due set: <code>primoSet ^ secondoSet</code>.</p><p>Il risultato è stato 1, 2, 4, 7. &nbsp;Nessuno di questi elementi compare in entrambi i set.</p><h2 id="riepilogo"><strong>Riepilogo</strong></h2><p>In questo articolo, abbiamo parlato dei set e di come crearli in Python.</p><p>I set non ammettono elementi duplicati, hanno un ordine casuale e gli elementi in essi contenuti non possono essere modificati.</p><p>Abbiamo anche visto come accedere, aggiungere e rimuovere elementi dai set usando metodi diversi.</p><p>Infine, abbiamo parlato di quando usare i set in Python. Abbiamo visto alcune applicazioni dei set in Python e il loro utilizzo nelle operazioni matematiche.</p><p>Buona programmazione!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Gestione dei File in Python – Come Creare, Leggere e Scrivere un File ]]>
                </title>
                <description>
                    <![CDATA[ In questo tutorial, imparerai come aprire un file, scrivere nel file e chiuderlo. Imparerai anche come leggere un file usando Python. Alla fine di questo tutorial, dovresti sapere le basi di come usare i file in Python. Gestione dei File in Python La gestione dei file è un'importante attività di ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/gestione-dei-file-in-python-come-creare-leggere-e-scrivere-un-file/</link>
                <guid isPermaLink="false">64bd3ccb604ac30674399564</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Paola Rosati ]]>
                </dc:creator>
                <pubDate>Mon, 07 Aug 2023 09:37:57 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/07/Author-Share-ImageFREE--4-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/file-handling-in-python/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">File Handling in Python – How to Create, Read, and Write to a File</a>
      </p><p>In questo tutorial, imparerai come aprire un file, scrivere nel file e chiuderlo. Imparerai anche come leggere un file usando Python.</p><p>Alla fine di questo tutorial, dovresti sapere le basi di come usare i file in Python.</p><h2 id="gestione-dei-file-in-python"><strong>Gestione dei File<strong><strong> in Python</strong></strong></strong></h2><p>La gestione dei file è un'importante attività di ogni app web. Le tipologie di attività che puoi eseguire su di un file aperto sono controllate dalle modalità di accesso. Esse descrivono come un file verrà usato dopo essere stato aperto.</p><p>Queste modalità specificano, inoltre, dove deve trovarsi l'handle del file al suo interno. Simile a un puntatore, l'handle di un file indica dove vanno letti o inseriti i dati in un file.</p><p>In Python, ci sono sei metodi o modalità di accesso, che sono:</p><ol><li><strong><strong>Read Only (<code>r</code></strong> – sola lettura)<strong>: </strong></strong>questa modalità apre il file di testo per la sola lettura. L'handle si trova all'inizio del file. Si verifica l'errore di I/O se il file non esiste. Questa è anche la modalità predefinita per aprire i file.</li><li><strong><strong>Read and Write (<code>r+</code></strong> – lettura e scrittura)<strong>:</strong></strong> questo metodo apre il file sia per la lettura che per la scrittura. L'handle si trova all'inizio del file. Se il file non esiste, si verifica un errore di I/O.</li><li><strong><strong>Write Only (<code>w</code></strong> – sola scrittura)<strong>:</strong></strong> questa modalità apre il file per la sola scrittura. I dati in file già esistenti vengono modificati e sovrascritti. L'handle si trova all'inizio del file. Se il file non esiste già nella cartella, ne viene creato uno nuovo.</li><li><strong><strong>Write and Read (<code>w+</code></strong> – scrittura e lettura)</strong>: questa modalità apre il file sia per la lettura che per la scrittura. Il testo è sovrascritto e cancellato da un file esistente. L'handle si trova all'inizio del file.</li><li><strong><strong>Append Only (<code>a</code></strong> – sola aggiunta)</strong>: questa modalità permette di aprire il file per la scrittura. Se il file non esiste, ne viene creato uno nuovo. L'handle si trova alla fine del file. I nuovi dati scritti vengono aggiunti alla fine, dopo i dati già esistenti.</li><li><strong><strong>Append and Read (<code>a+</code></strong> – aggiunta e lettura)<strong>: </strong></strong>usando questo metodo, puoi leggere e scrivere nel file. Se il file non esiste, ne viene creato uno. L'handle si trova alla fine del file. Il nuovo testo scritto viene aggiunto alla fine, dopo i dati già esistenti.</li></ol><p>Di seguito c'è il codice necessario per creare, scrivere e leggere file di testo usando i metodi di gestione dei file o le modalità di accesso di Python.</p><h2 id="come-creare-file-in-python"><strong>Come Creare File in Python</strong></h2><p>In Python, puoi usare la funzione <code>open()</code> con una delle seguenti opzioni - "x" o "w" - per creare un nuovo file:</p><ul><li><strong><strong>"x" – Crea</strong>r<strong>e</strong></strong>: questo comando creerà un nuovo file se e solo se non c'è già un file esistente con lo stesso nome, altrimenti si verificherà un errore.</li></ul><p>Esempio della creazione di un file in Python usando il comando "x":</p><pre><code class="language-python"># creazione di un file di testo con la funzione di comando "x"

f = open("myfile.txt", "x")</code></pre><p>Adesso abbiamo creato un nuovo file vuoto! Ma se riprovi ad eseguire il codice qui sopra - per esempio, se provi a creare un nuovo file con lo stesso nome che hai usato qui sopra (se vuoi riusare il nome del file in alto), otterrai un errore che ti notifica che il file esiste già. Come nell'immagine in basso:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/08/image-1.png" class="kg-image" alt="image-1" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/08/image-1.png 600w, https://www.freecodecamp.org/italian/news/content/images/size/w1000/2023/08/image-1.png 1000w, https://www.freecodecamp.org/italian/news/content/images/2023/08/image-1.png 1050w" sizes="(min-width: 720px) 720px" width="1050" height="366" loading="lazy"></figure><ul><li><strong><strong>"w" – </strong>Scrivere</strong>: questo comando creerà un nuovo file di testo a prescindere dal fatto che ci sia o meno già un file in memoria con il nuovo nome specificato. Non restituirà un errore se trova un file esistente con lo stesso nome - invece, sovrascriverà il file esistente.</li></ul><p>Esempio di come creare un file con il comando "w":</p><pre><code class="language-python"># creazione di un file di testo con la funzione di comando "w"

f = open("myfile.txt", "w")

#Questo comando "w" può anche essere usato per creare un nuovo file, ma a differenza del comando "x", il comando "w" sovrascriverà qualsiasi file esistente con lo stesso nome.</code></pre><p>Con il codice qui sopra, sia che il file esista o che il file non esista in memoria, puoi procedere e usare il codice. Tieni a mente che sovrascriverà il file se ne trova uno già esistente con lo stesso nome.</p><h2 id="come-scrivere-un-file-in-python"><strong>Come Scrivere un File in Python</strong></h2><p>Ci sono due metodi per scrivere un file in Python, che sono:</p><h3 id="il-metodo-write-"><strong>Il metodo <code>write()</code>:</strong></h3><p>Questa funzione inserisce la stringa all'interno del file di testo su una singola riga.</p><p>Prendendo come esempio il file che abbiamo creato prima, la riga di codice in basso inserirà la stringa nel nuovo file di testo creato, che è "myfile.txt".</p><pre><code class="language-python">
file.write("Ciao a tutti\n")</code></pre><h3 id="il-metodo-writelines-"><strong>Il metodo <code>writelines()</code>:</strong></h3><p>Questa funzione inserisce più stringhe allo stesso tempo. Viene creata una lista di stringhe, e ogni stringa viene aggiunta al file di testo.</p><p>Usando il file creato in precedenza, la riga di codice in basso inserirà la stringa nel file di testo creato, che è "myfile.txt".</p><pre><code class="language-python">f.writelines(["Hello World ", "Benvenuti su FCC\n"])</code></pre><p>Esempio:</p><pre><code class="language-python">#Questo programma mostra come scrivere dati in un file di testo.

file = open("myfile.txt","w")
L = ["Questa è Lagos \n","Questo è Python \n","Questo è Fcc \n"]

# ho assegnato ["Questa è Lagos \n","Questo è Python \n","Questo è Fcc \n"]
# alla variabile L, puoi usare qualsiasi lettera o parola a tua scelta.
# Le variabili sono contenitori in cui i valori possono essere immagazzinati.
# Il \n è inserito per indicare la fine di una riga

file.write("Ciao a tutti \n")
file.writelines(L)
file.close()

# Usa close() per cambiare la modalità di accesso del file</code></pre><h2 id="come-leggere-un-file-di-testo-in-python"><strong>Come Leggere un File di Testo in Python</strong></h2><p>Ci sono tre metodi per leggere dati da un file di testo in Python. Ecco quali:</p><h3 id="il-metodo-read-"><strong>Il metodo <code>read()</code>:</strong></h3><p>Questa funzione restituisce i byte letti come una stringa. Se non viene specificato nessun valore n, leggerà l'intero il file.</p><p>Esempio:</p><pre><code class="language-python">f = open("myfiles.txt", "r")
#('r’) apre il file di testo per la sola lettura
print(f.read())
#"f.read" stampa i dati nel file di testo sulla shell quando viene eseguito.</code></pre><h3 id="il-metodo-readline-"><strong>Il metodo <code>readline()</code>:</strong></h3><p>Questa funzione legge una riga da un file e la restituisce come stringa. Legge un massimo di n bytes a seconda del valore n specificato. Ma se anche n è più grande della lunghezza della riga, non leggerà più di una riga.</p><pre><code class="language-python">f = open("myfiles.txt", "r")
print(f.readline())
</code></pre><h3 id="il-metodo-readlines-"><strong>Il metodo <code>readlines()</code>:</strong></h3><p>Questa funzione legge tutte le righe e le restituisce come stringhe in una lista, una per ogni riga.</p><p>Puoi leggere le prime due righe di un file chiamando <code>readline()</code> due volte:</p><pre><code class="language-python">f = open("myfiles.txt", "r")
print(f.readline())
print(f.readline())
</code></pre><h2 id="come-chiudere-un-file-di-testo-in-python"><strong>Come Chiudere un File di Testo in Python</strong></h2><p>È buona prassi chiudere sempre il file quando hai finito di lavorarci.</p><h3 id="esempio-di-chiusura-di-un-file-di-testo-"><strong>Esempio di chiusura di un file di testo:</strong></h3><p>Questa funzione chiude il file di testo quando hai finito di modificarlo:</p><pre><code class="language-python">f = open("myfiles.txt", "r")
print(f.readline())
f.close()
</code></pre><p>La funzione <code>close()</code> alla fine del codice dice a Python che ok, ho finito con questa sezione di creazione o lettura - è la stessa cosa di dire Fine.</p><h3 id="esempio-"><strong>Esempio:</strong></h3><p>Il programma qui in basso mostra più esempi di modi di leggere e scrivere dati in un file di testo. Ogni riga di codice ha dei commenti per aiutare a capire che cosa sta succedendo:</p><pre><code class="language-python"># Programma che mostra vari modi di leggere e
# scrivere dati in un file di testo.

file = open("myfile.txt","w")
L = ["Questa è Lagos \n","Questo è Python \n","Questo è Fcc \n"]

#ho assegnato ["Questa è Lagos \n","Questo è Python \n","Questo è Fcc \n"]
#alla variabile L
  
# \n è inserito per indicare la fine di una riga

file.write("Ciao a tutti \n")
file.writelines(L)
file.close()
# usa close() per cambiare la modalità di accesso del file



file = open("myfile.txt","r+") 
print("L'output della funzione Read è ")
print(file.read())
print()
  
# seek(n) prende il file handle fino all'n-esimo
# byte dall'inizio.
file.seek(0) 
  
print( "L'output della funzione Readline è ")
print(file.readline()) 
print()
  
file.seek(0)
  
# Per mostrare la differenza tra read e readline

print("L'output della funzione read(12) è ") 
print(file.read(12))
print()

file.seek(0)
  
print("L'output della funzione readline(8) è ") 
print(file.readline(8))
  
file.seek(0)
# funzione readlines
print("L'output della funzione readlines è ") 
print(file.readlines()) 
print()
file.close()

</code></pre><p>Questo è l'output del codice in alto quando viene eseguito nella shell. Ho assegnato "Questa è Lagos", "Questo è Python" e "Questo è FCC" a "L" e poi ho chiesto di stamparlo usando la funzione "file.read()".</p><p>Il codice in alto mostra che la funzione "readline()" restituisce la lettera basandosi sul numero che le viene specificato, mentre la funzione "readlines()" restituisce ogni stringa assegnata a "L", incluso il \n. Dunque, la funzione "readlines()" stamperà tutti i dati all'interno del file.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/08/image1.png" class="kg-image" alt="image1" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/08/image1.png 600w, https://www.freecodecamp.org/italian/news/content/images/size/w1000/2023/08/image1.png 1000w, https://www.freecodecamp.org/italian/news/content/images/2023/08/image1.png 1047w" sizes="(min-width: 720px) 720px" width="1047" height="652" loading="lazy"></figure><h2 id="conclusione"><strong>Conclusione</strong></h2><p>Spero che, dopo aver letto questo tutorial, tu abbia capito che cos'è la gestione di un file in Python. Abbiamo anche imparato le modalità/i metodi necessari per creare, scrivere, leggere e chiudere un file di testo usando alcuni esempi base da Python.</p><p>Grazie per aver letto!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ TypeError: 'int' object is not subscriptable [Errore di Python Risolto] ]]>
                </title>
                <description>
                    <![CDATA[ L'errore di Python "TypeError: 'int' object is not subscriptable" (TypeError: l'oggetto 'int' non è sottoscrivibile) si verifica quando provi a trattare un numero intero come un oggetto "sottoscrivibile". In Python, un oggetto "sottoscrivibile" è un oggetto su cui puoi usare l'operatore parentesi quadre [], o su cui puoi iterare. Perché ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/typeerror-int-object-is-not-subscriptable-errore-di-python-risolto/</link>
                <guid isPermaLink="false">64c505e67194960696cf2d2f</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Paola Rosati ]]>
                </dc:creator>
                <pubDate>Tue, 01 Aug 2023 07:36:09 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/07/in_not_subable.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/python-typeerror-int-object-not-subscriptable-solved/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">TypeError: 'int' object is not subscriptable [Solved Python Error]</a>
      </p><p>L'errore di Python "TypeError: 'int' object is not subscriptable" (TypeError: l'oggetto 'int' non è sottoscrivibile) si verifica quando provi a trattare un numero intero come un oggetto "sottoscrivibile".</p><p>In Python, un oggetto "sottoscrivibile" è un oggetto su cui puoi usare l'operatore parentesi quadre <code>[]</code>, o su cui puoi iterare.</p><h2 id="perch-si-verifica-l-errore-typeerror-int-object-is-not-subscriptable-error"><strong>Perché si Verifica l'Errore "TypeError: 'int' object is not subscriptable Error"</strong></h2><p>Puoi iterare su una stringa, una lista, una tupla o anche un dizionario. Ma non è possibile iterare su un numero intero o un insieme di numeri.</p><p>Quindi, se ottieni questo errore, significa che stai cercando di iterare su un numero intero oppure che stai trattando un numero intero come un array.</p><p>Nell'esempio in basso, ho scritto la data di nascita (variabile <code>dob</code>) nel formato ddmmyy. Ho provato a ottenere il mese di nascita ma non ha funzionato. Ha restituito l'errore "TypeError: 'int' object is not subscriptable":</p><pre><code class="language-py">dob = 21031999
mob = dob[2:4]

print(mob)

# Output: Traceback (most recent call last):
#   File "int_not_subable..py", line 2, in &lt;module&gt;
#     mob = dob[2:4]
# TypeError: 'int' object is not subscriptable
</code></pre><h2 id="come-risolvere-l-errore-typeerror-int-object-is-not-subscriptable"><strong>Come Risolvere l'Errore "TypeError: 'int' object is not subscriptable"</strong></h2><p>Per risolvere questo errore, devi convertire il numero intero in un altro tipo di dato che sia iterabile, per esempio, una stringa.</p><p>E se stai ottenendo questo errore perché hai convertito qualcosa in un numero intero, allora devi riconvertirlo in ciò che era prima. Per esempio, una stringa, una tupla, una lista, e così via.</p><p>Per quanto riguarda il codice che ci ha restituito l'errore in alto, sono stato in grado di farlo funzionare convertendo la variabile <code>dob</code> in una stringa:</p><pre><code class="language-py">dob = "21031999"
mob = dob[2:4]

print(mob)

# Output: 03
</code></pre><p>Se stai ottenendo l'errore dopo aver convertito qualcosa in un numero intero, significa che devi riconvertirlo in una stringa e lasciarlo così com'è.</p><p>Nell'esempio in basso, ho scritto un programma di Python che stampa la data di nascita nel formato ddmmyy. Ma restituisce un errore:</p><pre><code class="language-py">name = input("Come ti chiami? ")
dob = int(input("Qual è la tua data di nascita nel formato ddmmyy? "))
dd = dob[0:2]
mm = dob[2:4]
yy = dob[4:]
print(f"Ciao, {name}, \nIl tuo giorno di nascita è {dd} \nIl mese di nascita è {mm} \nE l'anno di nascita è {yy}.")

#Output: Come ti chiami? John Doe
# Qual è la tua data di nascita nel formato ddmmyy? 01011970
# Traceback (most recent call last):
#   File "int_not_subable.py", line 12, in &lt;module&gt;
#     dd = dob[0:2]
# TypeError: 'int' object is not subscriptable
</code></pre><p>Scorrendo il codice, ho ricordato che l'input restituisce una stringa, quindi non devo convertire la data di nascita inserita dall'utente in un numero intero. Questo risolve l'errore:</p><pre><code class="language-py">name = input("Come ti chiami? ")
dob = input("Qual è la tua data di nascita nel formato ddmmyy? ")
dd = dob[0:2]
mm = dob[2:4]
yy = dob[4:]
print(f"Ciao, {name}, \nIl tuo giorno di nascita è {dd} \nIl mese di nascita è {mm} \nE l'anno di nascita è {yy}.")

#Output: Come ti chiami? John Doe
# Qual è la tua data di nascita nel formato ddmmyy? 01011970
# Ciao, John Doe,
# Il tuo giorno di nascita è 01
# Il mese di nascita è 01
# E l'anno di nascita è 1970.
</code></pre><h2 id="conclusione"><strong>Conclusione</strong></h2><p>In questo articolo, hai imparato che cosa causa l'errore "TypeError: 'int' object is not subscriptable" in Python e come risolverlo.</p><p>Se stai ottenendo questo errore, significa che stai trattando un numero intero come un tipo di dato iterabile. I numeri interi non sono iterabili, quindi devi usare un tipo di dato differente o convertire il numero intero in un tipo di dato iterabile.</p><p>E se questo errore si verifica perché hai convertito qualcosa in un numero intero, allora devi riconvertirlo in un tipo di dato iterabile.</p><p>Grazie per aver letto.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Come Scaricare e Tagliare MP3 da YouTube con Python ]]>
                </title>
                <description>
                    <![CDATA[ Siamo tutti diversi, ma penso che quasi tutti amiamo ascoltare la musica. Se vuoi tenere una versione locale degli stream audio che ascolti spesso, dovrai scaricare questi file. A volte potresti anche voler tagliare una porzione di questo file audio invece di avere solo il file intero disponibile. Puoi sviluppare ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/come-scaricare-e-tagliare-mp3-da-youtube-con-python/</link>
                <guid isPermaLink="false">64a2de8caedaa5069ba96ef9</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Paola Rosati ]]>
                </dc:creator>
                <pubDate>Wed, 26 Jul 2023 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/07/pexels-pixabay-164821.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/download-trim-mp3-from-youtube-with-python/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Download and Trim MP3s from YouTube with Python</a>
      </p><p>Siamo tutti diversi, ma penso che quasi tutti amiamo ascoltare la musica.</p><p>Se vuoi tenere una versione locale degli stream audio che ascolti spesso, dovrai scaricare questi file. A volte potresti anche voler tagliare una porzione di questo file audio invece di avere solo il file intero disponibile.</p><p>Puoi sviluppare uno script di Python per fare esattamente queste cose. Puoi anche ampliarlo con delle funzionalità aggiuntive se preferisci. E ti mostrerò come farlo in questo tutorial.</p><h2 id="una-nota-sul-copyright"><strong>Una Nota sul Copyright</strong></h2><p>Se hai mai usato internet prima d'ora, probabilmente sei consapevole del fatto che i problemi di copyright possono dare fastidio a molte persone - qualsiasi sia la loro posizione su come dovrebbero essere i contenuti gratuiti.</p><p><a href="https://github.blog/2020-11-16-standing-up-for-developers-youtube-dl-is-back/">Anche la stessa libreria che andremo ad usare ha avuto la sua buona parte di problemi di copyright.</a> </p><p>Fortunatamente, c'è del materiale non protetto da copyright disponibile con cui possiamo sia divertirci che giocare nei nostri programmi. Per questo motivo, in questo tutorial useremo il brano non protetto da diritti d'autore del <a href="https://www.youtube.com/watch?v=8OAPLk20epo">quarto movimento della nona sinfonia di Beethoven</a>.</p><p>Questa guida dà per scontato che userai i seguenti metodi per scaricare del materiale non protetto da copyright. Non usare queste informazioni per infrangere alcun copyright!</p><h2 id="cosa-faremo-in-questo-tutorial"><strong>Cosa Faremo in Questo Tutorial</strong></h2><p>Per prima cosa installeremo la dipendenza di base, FFMPEG. Poi installeremo la libreria <code>youtube-dl</code> (che funziona anche con Vimeo ed altre piattaforme) per scaricare audio da un URL di YouTube e usarlo nel nostro codice di Python.</p><p>Poi scaricheremo la libreria <code>pydub</code> per ritagliare i file audio e implementare questa funzionalità nel nostro codice.</p><p>Infine, creeremo alcune amichevoli interfacce utente così da poter riutilizzare questo script in un secondo momento senza dover modificare il codice.</p><p>Questo è tutto ciò che verrà eseguito nella funzione <code>main()</code> così possiamo separare funzionalità, implementazione ed uso.</p><h2 id="come-installare-il-pacchetto-ffmpeg"><strong>Come Installare il Pacchetto FFMPEG</strong></h2><p>Questo pacchetto è la parte essenziale di molti programmi multimediali (e di tutti quelli open-source che ho usato finora). Ne avremo bisogno per entrambe le librerie di Python che presto installeremo.</p><h3 id="come-installare-su-linux"><strong>Come Installare su Linux</strong></h3><p>Se sei su un sistema basato su Debian (come Ubuntu o Kali), ecco il comando per installare FFMPEG:</p><pre><code>sudo apt-get install ffmpeg</code></pre><p>Se stai usando altre tipologie di distribuzioni, le istruzioni per installare sono <a href="https://ffmpeg.org/download.html">qui</a>.</p><h3 id="come-installare-su-windows"><strong>Come Installare su Windows</strong></h3><p>Per prima cosa, installa il <a href="https://chocolatey.org/how-chocolatey-works">Chocolatey Package Manager</a>. Le istruzioni per installarlo sono <a href="https://chocolatey.org/install">qui</a>, ti aspetto.</p><p>Una volta che avrai correttamente installato chocolatey (se non lo avevi già), scarica il pacchetto eseguendo <strong>questo comando come amministratore su Powershell</strong>:</p><pre><code class="language-powershell">choco install ffmpeg
</code></pre><h3 id="come-installare-su-mac"><strong>Come Installare su Mac</strong></h3><p>Se già non lo hai, <a href="https://brew.sh/">installa homebrew</a>. Poi, in un terminale:</p><pre><code>brew install ffmpeg</code></pre><h2 id="come-scaricare-audio-da-url-di-youtube-programmaticamente"><strong>Come Scaricare Audio da URL di YouTube Programmaticamente</strong></h2><p>Prima di tutto, scarica il pacchetto youtube-dl da pip. È <a href="https://github.com/ytdl-org/youtube-dl">uno tra quelli con più stelle su GitHub</a>.</p><p><code>pip install youtube-dl</code></p><p>Importeremo questo modulo per poi dichiarare una funzione che scarica l'audio in un formato mp3 di qualità accettabile da un URL di YouTube.</p><pre><code class="language-python">import youtube_dl # client per molti portali multimediali

# scarica yt_url nella stessa cartella da cui viene eseguito lo script
def download_audio(yt_url):
    ydl_opts = {
        'format': 'bestaudio/best',
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192',
        }],
    }
    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        ydl.download([yt_url])

def main():
    yt_url = "https://www.youtube.com/watch?v=8OAPLk20epo"
    download_audio(yt_url)

main()
</code></pre><p>Il metodo <code>.download()</code> scaricherà gradualmente lo stream audio come file <code>.webm</code>. Una volta che avrà determinato che l'intero file è disponibile, userà <code>ffmpeg</code> per convertirlo in un file MP3. Ciò significa che se succedesse qualcosa, ad esempio se ci fosse un calo di connessione quando solo il 90% del file è stato scaricato, il download riprenderà dal 90% invece che dall'inizio - molto conveniente.</p><p>Nota che se hai già il file mp3 scaricato, il download ricomincerà e sovrascriverà il file.</p><p>Esegui il tuo script di Python. Il download dell'audio di questa interpretazione del Quarto movimento della Nona sinfonia di Beethoven dovrebbe scaricare un file MP3 di ~33MB con il titolo del video disponibile localmente. Probabilmente sarà un po' lento, quindi vai pure a farti una tazza di tè.</p><p>Come puoi vedere, è possibile passare parametri opzionali a youtube-dl (che sarà disponibile anche come programma CLI autonomo al di fuori dello script). Una delle sue capacità è quella di <a href="https://github.com/ytdl-org/youtube-dl#video-selection">scaricare una serie di video dall'URL di una playlist</a>. Se sei interessato, puoi leggere la loro documentazione. In questo tutorial continuerò a farne un uso più superficiale.</p><h2 id="come-tagliare-il-file-scaricato"><strong>Come Tagliare il File Scaricato</strong></h2><p>Una volta scaricato il file, andremo a tagliarlo arbitrariamente in locale (potresti esserti chiesto se fosse o meno possibile scaricare semplicemente una clip da YouTube. Tutti i metodi affidabili che ho trovato portano sempre a scaricare l'intero file e poi a modificarlo localmente). Per quello useremo la <a href="https://github.com/jiaaro/pydub">libreria pydub</a>. Puoi installarla così:</p><pre><code class="language-python">pip install pydub</code></pre><p>Questa è una libreria molto buona che ti permette di manipolare completamente l'audio, riducendo o aumentando il volume a determinati intervalli, ripetendo delle clip, e così via. Per ora, ci interessa solo tagliarlo.</p><p>Per tagliare il nostro file scaricato, dovremo prendere il nome del nostro nuovo file MP3, convertire il punto di inizio e il punto di fine dell'intervallo audio che desideriamo da 'ore:minuti:secondi' a millisecondi, e finalmente usare <code>pydub</code> per tagliare il nostro file audio.</p><h3 id="come-prendere-il-nome-del-file"><strong>Come prendere il nome del file</strong></h3><p>Sfortunatamente, il metodo <code>.download()</code> non restituisce il nome del file generato, a cui non avremmo comunque accesso avendo passato l'URL come parametro. Ma abbiamo Python che è uno strumento fantastico.</p><p>Sappiamo che stiamo cercando un file <code>.mp3</code> che è stato generato giusto poco prima della nostra ricerca del nome del file (Python è un linguaggio a thread singolo e eseguirà il codice in modo sincrono di default). Prenderemo il nome del nostro file MP3 più recente nella cartella dello script, e quello sarà il nostro file.</p><p>Possiamo eseguire questa operazione elencando tutti i file <code>.mp3</code> nella cartella locale, prendendo le loro marche temporali come numeri interi (dunque il tempo in millisecondi contato da una data del passato. Ciò significa che più alto sarà il valore, più lontano nel tempo il file sarà stato creato.) e scegliendo il file con il valore più alto.</p><p>Per questo avremo bisogno dei moduli <code>glob</code> per navigare nella cartella e <code>os</code> per prendere le informazioni delle marche temporali, entrambi già disponibili.</p><pre><code class="language-python">import glob
import os

def newest_mp3_filename():
    # elenca tutti gli mp3 nella cartella locale
    list_of_mp3s = glob.glob('./*.mp3')
    # restituisce l'mp3 con il valore di marca temporale più alto
    return max(list_of_mp3s, key = os.path.getctime)
</code></pre><h3 id="come-ottenere-hh-mm-ss-in-millisecondi"><strong>Come ottenere HH:MM:SS in millisecondi</strong></h3><p>Una volta tagliato il nostro file, <code>pydub</code> si aspetta degli intervalli di tempo in millisecondi. Ma per noi esseri umani, calcolare il momento esatto in millisecondi ogni volta che tagliamo un video potrebbe risultare abbastanza fastidioso, quindi chiederemo gentilmente al computer di farlo per noi.</p><p>Il nostro input sarà una stringa nel formato <strong>HH:MM:SS</strong>. Questa cosa funziona bene se vogliamo tagliare un video più lungo di un'ora, ma la maggior parte delle volte vogliamo solo ottenere l'intervallo di tempo da un intervallo minuto:secondo ad un altro. Quindi dobbiamo tenere in considerazione anche questo.</p><p>Un millisecondo è un 1/1000 di un secondo, un minuto è formato da 60 secondi e un'ora è formata da 60 minuti. Dunque dobbiamo prima ottenere il valore per le ore, poi per i minuti, poi per i secondi, eseguire la conversione in millisecondi per ognuno e poi sommare le parti per ottenere il risultato.</p><pre><code class="language-python">def get_video_time_in_ms(video_timestamp):
    vt_split = video_timestamp.split(":")
    if (len(vt_split) == 3): # se in formato HH:MM:SS
        hours = int(vt_split[0]) * 60 * 60 * 1000
        minutes = int(vt_split[1]) * 60 * 1000
        seconds = int(vt_split[2]) * 1000
    else: # formato MM:SS
        hours = 0
        minutes = int(vt_split[0]) * 60 * 1000
        seconds = int(vt_split[1]) * 1000
    # tempo in millisecondi
    return hours + minutes + seconds
</code></pre><h3 id="come-ottenere-l-audio-tagliato"><strong>Come Ottenere l'Audio Tagliato</strong></h3><p>Adesso leggeremo il nostro MP3 come oggetto <code>pydub</code> e taglieremo l'intervallo che desideriamo. La sintassi è la stessa dell'operazione di taglio per stringhe e array, ma invece di un indice per ogni elemento useremo i millisecondi per istanti specifici all'interno dell'audio.</p><pre><code class="language-python">def get_trimmed(mp3_filename, initial, final = ""):
    if (not mp3_filename):
        # restituisci un errore per fermare immediatamente l'esecuzione del programma
        raise Exception("Nessun MP3 nella cartella locale.")
    # legge l'mp3 come oggetto PyDub
    sound = AudioSegment.from_mp3(mp3_filename)
    t0 = get_video_time_in_ms(initial)
    print("Inizio del processo di taglio del file ", mp3_filename, ".\n")
    print("Inizia da ", initial, "...")
    if (len(final) &gt; 0):
        print("...fino a ", final, ".\n")
        t1 = get_video_time_in_ms(final)
        return sound[t0:t1] # da t0 fino a t1
    return sound[t0:] # t0 fino alla fine
</code></pre><h2 id="come-mettere-tutto-insieme">Come Mettere Tutto Insieme</h2><blockquote>Alle Menschen werden Brüder,<br>Wo dein sanfter Flügel weilt.<br>-- Friedrich Schiller</blockquote><p>Nel caso te lo stessi chiedendo, la traduzione del frammento qui sopra è "Tutti gli uomini diventano fratelli, dove la tua ala soave freme." È un frammento dell'<em>Inno alla Gioia</em>, un poema di Friedrich Schiller, che fa da testo alla maggior parte delle parti corali del Quarto movimento.</p><p>Questo è il frammento più famoso del movimento più famoso della sinfonia più famosa di Beethoven. Chiunque tu sia, dovunque e comunque tu sia stato cresciuto, quasi sicuramente riconoscerai questo brano.</p><p>Adesso metteremo insieme tutto ciò che abbiamo fatto. Scaricheremo l'audio da YouTube, taglieremo la parte corale dell'Inno alla Gioia (da <code>9:51</code> a <code>14:04</code>), e lo salveremo come <code>&lt;filename&gt; - TRIM.mp3</code>.</p><p>Se hai seguito correttamente il tutorial, aggiorna la tua funzione <code>main()</code> per eseguire ogni fase in modo da avere sia l'MP3 intero che la versione tagliata nella cartella da cui eseguirai lo script. Non dimenticarti di eseguire la funzione <code>main()</code> alla fine dello script.</p><pre><code class="language-python">def main():
    yt_url = "https://www.youtube.com/watch?v=8OAPLk20epo"
    download_audio(yt_url)
    initial = "9:51"
    final = "14:04"
    filename = newest_mp3_filename()
    trimmed_file = get_trimmed(filename, initial, final)
    trimmed_filename = "".join([filename.split(".mp3")[0], "- TRIM.mp3"])
    print("Processo concluso con successo. Salvataggio del file tagliato con il nome ", trimmed_filename)
    # salva il file con il nuovo nome
    trimmed_file.export(trimmed_filename, format="mp3")
</code></pre><h2 id="come-aggiungere-l-interazione-dell-utente-direttamente-da-cli"><strong>Come Aggiungere l'Interazione dell'Utente Direttamente da CLI</strong></h2><p>Per questa parte avremo bisogno del modulo <code>sys</code> di Python, che legge l'input passato dalla linea di comando (tra le altre cose). Aggiorneremo semplicemente le variabili della funzione <code>main()</code> per leggere l'input dalla CLI invece dei dati che sono scritti nel codice.</p><p>ARGV legge l'input in modo sequenziale come un array, iniziando dall'indice 1 (0 rappresenta il nome dello script di Python in esecuzione). Lo imposteremo in modo da fargli leggere un URL come primo argomento, poi (questo è opzionale) gli istanti iniziali e finali per tagliarlo.</p><pre><code class="language-python">import sys

def main():
    if (not len(sys.argv) &gt; 1):
        print("Per favore, inserisci l'URL di una piattaforma multimediale supportata da youtube-dl come primo argomento.")
        return
    yt_url = sys.argv[1]
    download_audio(yt_url)
    if (not len(sys.argv &gt; 2)): # esci se non vengono inseriti istanti come argomenti
        return
    initial = sys.argv[2]
    final = ""
    if (sys.argv[3]):
        final = sys.argv[3]
    filename = newest_mp3_filename()
    trimmed_file = get_trimmed(filename, initial, final)
    trimmed_filename = "".join([filename.split(".mp3")[0], "- TRIM.mp3"])
    print("Processo concluso con successo. Salvataggio del file tagliato con il nome ", trimmed_filename)
    # salva il file con il nuovo nome
    trimmed_file.export(trimmed_filename, format="mp3")
</code></pre><p>Esegui il file per collaudarlo. Ricordati di usare il nome dello script che si trova sul tuo dispositivo.</p><pre><code class="language-bash">python ytauddown.py https://www.youtube.com/watch?v=8OAPLk20epo 9:51 14:04
</code></pre><h2 id="script-finale"><strong>Script Finale</strong></h2><p>Ecco la versione finale di tutto quanto messo insieme. Nota che i commenti sui moduli sono solo relativi a quello per cui dobbiamo usarli e che la funzione <code>main()</code> viene chiamata nell'ultima riga.</p><pre><code class="language-python">import youtube_dl # client per scaricare da molti portali multimediali
import glob # operazioni nelle cartelle
import os # interfaccia per prendere le informazioni sui file fornite dal sistema operativo
import sys # interfaccia per la linea di comando
from pydub import AudioSegment # solo operazioni audio

def newest_mp3_filename():
    # elenca tutti gli mp3 nella cartella locale
    list_of_mp3s = glob.glob('./*.mp3')
    # restituisce l'mp3 con il valore di marca temporale più alto
    return max(list_of_mp3s, key = os.path.getctime)

def get_video_time_in_ms(video_timestamp):
    vt_split = video_timestamp.split(":")
    if (len(vt_split) == 3): # se in formato HH:MM:SS
        hours = int(vt_split[0]) * 60 * 60 * 1000
        minutes = int(vt_split[1]) * 60 * 1000
        seconds = int(vt_split[2]) * 1000
    else: # formato MM:SS
        hours = 0
        minutes = int(vt_split[0]) * 60 * 1000
        seconds = int(vt_split[1]) * 1000
    # tempo in millisecondi
    return hours + minutes + seconds

def get_trimmed(mp3_filename, initial, final = ""):
    if (not mp3_filename):
        # restituisci un errore per fermare immediatamente l'esecuzione del programma
        raise Exception("Nessun MP3 nella cartella locale.")
    # legge l'mp3 come oggetto PyDub
    sound = AudioSegment.from_mp3(mp3_filename)
    t0 = get_video_time_in_ms(initial)
    print("Inizio del processo di taglio del file ", mp3_filename, ".\n")
    print("Inizia da ", initial, "...")
    if (len(final) &gt; 0):
        print("...fino a ", final, ".\n")
        t1 = get_video_time_in_ms(final)
        return sound[t0:t1] # da t0 fino a t1
    return sound[t0:] # t0 fino alla fine



# scarica yt_url nella stessa cartella da cui viene eseguito lo script
def download_audio(yt_url):
    ydl_opts = {
        'format': 'bestaudio/best',
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192',
        }],
    }
    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        ydl.download([yt_url])

def main():
    if (not len(sys.argv) &gt; 1):
        print("Per favore, inserisci l'URL di una piattaforma multimediale supportata da youtube-dl come primo argomento.")
        return
    yt_url = sys.argv[1]
    download_audio(yt_url)
    if (not len(sys.argv &gt; 2)): # esci se non vengono inseriti istanti come argomenti
        return
    initial = sys.argv[2]
    final = ""
    if (sys.argv[3]):
        final = sys.argv[3]
    filename = newest_mp3_filename()
    trimmed_file = get_trimmed(filename, initial, final)
    trimmed_filename = "".join([filename.split(".mp3")[0], "- TRIM.mp3"])
    print("Processo concluso con successo. Salvataggio del file tagliato con il nome ", trimmed_filename)
    # salva il file con il nuovo nome
    trimmed_file.export(trimmed_filename, format="mp3")

# esempio d'uso:
# python ytauddown.py https://www.youtube.com/watch?v=8OAPLk20epo 9:51 14:04
main()
</code></pre><h2 id="esercizi-consigliati"><strong>Esercizi Consigliati</strong></h2><ol><li>Individua se il primo input è un URL valido oppure no. Dai un'occhiata alle RegEx di Python se non sai da dove partire.</li><li>Individua se il secondo e il terzo input sono in un formato valido (ore:minuti:secondi <strong>OPPURE </strong>minuti:secondi).</li><li>Aggiungi un'opzione per rinominare il file MP3 direttamente dalla CLI. Ricorda che gli argomenti di ARGV vengono eseguiti in ordine.</li><li>Riscrivi lo script per interagire con le sue funzionalità usando una GUI. Può essere sia un'app locale che un'app web, come preferisci.</li></ol><h2 id="considerazioni-finali"><strong>Considerazioni Finali</strong></h2><p>Spero che ti divertirai con questo progetto e che ne farai buon uso.</p><p>Ricorda che guadagnarsi da vivere come artista è molto difficile, specialmente per la maggior parte di coloro che non hanno il supporto di un'azienda. Ricorda di supportare gli artisti che ti piacciono ogni volta che puoi e ricordati inoltre di supportare i software open-source.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Come Installare Python 3 su Mac – Tutorial per Installare e Aggiornare Brew ]]>
                </title>
                <description>
                    <![CDATA[ MacOS ha già Python pre-installato. Ma è la versione 2.7, che adesso è superata (abbandonata dalla comunità di sviluppatori di Python). L'intera comunità di Python adesso usa Python 3.x (la versione più recente al momento in cui viene scritto questo articolo è la 3.9). E presto verrà rilasciato Python 4.x, ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/come-installare-python-3-su-mac-tutorial-per-installare-e-aggiornare-brew/</link>
                <guid isPermaLink="false">6490167ca524800686f5fdb9</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Paola Rosati ]]>
                </dc:creator>
                <pubDate>Fri, 30 Jun 2023 07:26:42 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/06/606ba4e1d5756f080ba94d0c.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/python-version-on-mac-update/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Install Python 3 on Mac – Brew Install Update Tutorial</a>
      </p><p>MacOS ha già Python pre-installato. Ma è la versione 2.7, che adesso è superata (abbandonata dalla comunità di sviluppatori di Python).</p><p>L'intera comunità di Python adesso usa Python 3.x (la versione più recente al momento in cui viene scritto questo articolo è la 3.9). E presto verrà rilasciato Python 4.x, ma sarà totalmente retrocompatibile.</p><p>Se provi ad avviare Python dal tuo terminale di MacOS, vedrai questo avviso:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/freecodecamp_-_freecodecamp_MacBook-Pro_-___-_-zsh_-_84-24-1.png" class="kg-image" alt="freecodecamp_-_freecodecamp_MacBook-Pro_-___-_-zsh_-_84-24-1" width="600" height="400" loading="lazy"><figcaption>ATTENZIONE: Python 2.7 non è consigliato. Questa versione è inclusa in macOS per motivi di compatibilità con il vecchio software. Le versioni future di macOS non includeranno Python 2.7. Per questo, si consiglia di usare 'python3' dal terminale.</figcaption></figure><p>Fino a quando Apple non deciderà di impostare Python 3.x come versione predefinita, dovrai installarlo per conto tuo.</p><h2 id="un-singolo-comando-per-eseguire-python-3"><strong>Un Singolo Comando per Eseguire Python 3</strong></h2><p>Per alcune delle persone che stanno leggendo questo articolo, questo comando potrebbe essere sufficiente. Puoi eseguire Python 3 usando questo comando (con il 3 alla fine).</p><pre><code class="language-bash">python3</code></pre><p>Se questo è tutto ciò per cui siete qui, non preoccupatevi. Buona giornata e buona programmazione.</p><p>Ma se vuoi un vero e proprio sistema di controllo di versione di Python per tenere traccia delle varie versioni - e avere un maggiore controllo su quale versione usi - questo tutorial ti mostrerà esattamente come ottenerlo.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/Megaman-810x600.jpeg" class="kg-image" alt="Megaman-810x600" width="600" height="400" loading="lazy"><figcaption>Comunque, se ti stai chiedendo perché continuo a fare riferimento a Python 3.x - la x è un sostituto per le sottoversioni (o, come le chiamano gli sviluppatori, "point release".) Sta a indicare qualsiasi versione di Python 3.</figcaption></figure><h2 id="come-installare-homebrew-su-mac"><strong>Come Installare Homebrew su Mac</strong></h2><p>Per prima cosa hai bisogno di installare Homebrew, un potente sistema di gestione dei pacchetti per Mac.</p><p>Apri il tuo terminale. Puoi farlo usando MacOS spotlight (command + spazio) e scrivendo "terminal".</p><p>Ora che sei su una linea di comando, puoi installare l'ultima versione di Homebrew eseguendo questo comando:</p><pre><code class="language-bash">/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"</code></pre><p>Il tuo terminale chiederà i permessi di accesso di livello Super User. Avrai bisogno di inserire la tua password per eseguire questo comando. È la stessa password che inserisci quando fai log in sul tuo Mac. Inseriscila e premi invio.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/freecodecamp_-__bin_bash_-c__-__bin_bash_-_sudo_-_bash_-c____bin_bash_012set_-u_012_012abort___-_012__printf___s_n_______012__exit_1_012-_012_012if___-z___-BASH_VERSION_--_____then_012__abort__Bash_is_required_to_interpret_this_script___012.png" class="kg-image" alt="freecodecamp_-__bin_bash_-c__-__bin_bash_-_sudo_-_bash_-c____bin_bash_012set_-u_012_012abort___-_012__printf___s_n_______012__exit_1_012-_012_012if___-z___-BASH_VERSION_--_____then_012__abort__Bash_is_required_to_interpret_this_script___012" width="600" height="400" loading="lazy"><figcaption>Uno screenshot del mio terminale estremamente personalizzato. Probabilmente il tuo terminale sarà diverso da questo.</figcaption></figure><p>Homebrew ti chiederà di confermare di voler installare i seguenti elementi. Devi premere invio per continuare (o premere qualsiasi altro tasto se ci hai ripensato.)</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2021/04/freecodecamp_-__bin_bash_-c__-__bin_bash_-_bash_-c____bin_bash_012set_-u_012_012abort___-_012__printf___s_n_______012__exit_1_012-_012_012if___-z___-BASH_VERSION_--_____then_012__abort__Bash_is_required_to_interpret_this_script___012fi_012_.png" class="kg-image" alt="freecodecamp_-__bin_bash_-c__-__bin_bash_-_bash_-c____bin_bash_012set_-u_012_012abort___-_012__printf___s_n_______012__exit_1_012-_012_012if___-z___-BASH_VERSION_--_____then_012__abort__Bash_is_required_to_interpret_this_script___012fi_012_" width="600" height="400" loading="lazy"></figure><h2 id="come-installare-pyenv-per-gestire-le-tue-versioni-di-python"><strong>Come Installare pyenv per Gestire le Tue Versioni di Python</strong></h2><p>Adesso prendiamoci un momento per installare PyEnv. Questa libreria ti aiuterà a passare da una versione di Python all'altra (in caso avessi bisogno di eseguire Python 2.x per qualche motivo, e in vista dell'arrivo di Python 4.0).</p><p>Esegui questo comando:</p><pre><code class="language-bash">brew install pyenv</code></pre><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/freecodecamp_-_freecodecamp_MacBook-Pro_-___-_-zsh_-_90-24.png" class="kg-image" alt="freecodecamp_-_freecodecamp_MacBook-Pro_-___-_-zsh_-_90-24" width="600" height="400" loading="lazy"><figcaption>Installazione di PyEnv</figcaption></figure><p>Adesso puoi installare l'ultima versione di Python.</p><h2 id="come-usare-pyenv-per-installare-python-o-aggiornare-la-tua-versione-di-python"><strong>Come Usare pyenv per Installare Python o Aggiornare la Tua Versione di Python</strong></h2><p>Adesso devi solamente eseguire il seguente comando:</p><pre><code class="language-bash">pyenv install 3.9.2 </code></pre><p>Nota che puoi sostituire 3.9.2 con qualunque sia l'ultima versione di Python. Per esempio, quando uscirà Python 4.0.0, potrai eseguire questo:</p><pre><code class="language-bash">pyenv install 4.0.0</code></pre><h2 id="risoluzione-problemi-dell-installazione-di-pyenv"><strong>Risoluzione Problemi dell'Installazione di pyenv </strong></h2><p>Se incorri in un errore che dice "C compiler cannot create executables" (Il compilatore C non può creare file eseguibili), il modo più semplice di risolverlo è installare da capo Xcode di Apple.</p><p>Xcode è uno strumento creato da Apple che include tutte le librerie di C e altri strumenti che Python usa quando viene eseguito su MacOS. Xcode occupa la bellezza di 11 gigabyte, ma vorrai avere la versione più aggiornata. Potresti voler eseguire l'installazione mentre stai dormendo.</p><p>Puoi <a href="https://developer.apple.com/download/">ottenere l'ultima versione di Xcode di Apple qui</a>. Ho dovuto farlo dopo aver aggiornato MacOS Big Sur, ma una volta fatto tutti i comandi hanno funzionato senza problemi. Semplicemente esegui di nuovo il comando <code>pyenv install 3.9.2</code> e adesso dovrebbe funzionare.</p><h2 id="come-configurare-il-tuo-path-di-macos-per-pyenv-bash-o-zsh-"><strong>Come Configurare il tuo PATH di MacOS per pyenv (Bash o ZSH)</strong></h2><p>Per prima cosa hai bisogno di aggiornare il tuo path Unix per fare in modo che PyEnv possa interagire con il tuo sistema.</p><p>Ecco una lunga spiegazione di come funziona il PATH su MacOS (e Unix), direttamente dal <a href="https://github.com/pyenv/pyenv">repository di GitHub di pyenv</a>.</p><blockquote>Quando esegui un comando come <code>python</code> o <code>pip</code>, il tuo sistema operativo cerca in una lista di cartelle un file eseguibile con quel nome. Questa lista di cartelle si trova in una variabile d'ambiente chiamata <code>PATH</code>, con ogni cartella della lista separata da due punti:</blockquote><pre><code>/usr/local/bin:/usr/bin:/bin
</code></pre><blockquote>Le cartelle all'interno di <code>PATH</code> vengono cercare da sinistra a destra, quindi il file eseguibile corrispondente che si trova in una cartella all'inizio della lista ha la precedenza su un altro che si trova alla fine. In questo esempio, la cartella &nbsp;<code>/usr/local/bin</code> verrà ispezionata prima, poi <code>/usr/bin</code>, poi <code>/bin</code>.</blockquote><p>Ed ecco la spiegazione di cosa è uno Shim. Sto citando di nuovo il documento per esteso perché non riesco davvero a spiegarlo meglio di così.</p><blockquote>pyenv funziona inserendo una cartella di shim all'inizio del tuo <code>PATH</code>:</blockquote><pre><code>$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin
</code></pre><blockquote>Attraverso un processo chiamato rehashing, pyenv mantiene gli shim in quella cartella così che trovi le corrispondenze per ogni comando di Python attraverso tutte le versioni di Python installate —<code>python</code>, <code>pip</code>, e così via.</blockquote><blockquote>Gli shim sono file eseguibili leggeri che passano semplicemente il tuo comando a pyenv.</blockquote><p>Ecco come aggiornare il tuo <code>.bash_profile</code> su Bash (che è già installato su MacOS):</p><pre><code>echo 'export PYENV_ROOT="$HOME/.pyenv"' &gt;&gt; ~/.bash_profile</code></pre><p>Poi esegui:</p><pre><code>echo 'export PATH="$PYENV_ROOT/bin:$PATH"' &gt;&gt; ~/.bash_profile</code></pre><p><strong><strong>Not</strong>a<strong>:</strong></strong> se non hai una cartella <code>/bin</code> nella tua cartella <code>pyenv_root</code> (puoi avere solo una cartella <code>/shims</code>) potresti aver bisogno di eseguire questa versione del comando:</p><pre><code>`echo 'export PATH="$PYENV_ROOT/shims:$PATH"' &gt;&gt; ~/.bash_profile`</code></pre><p>Dopodiché vorrai aggiungere PyEnv Init al tuo terminale. Esegui questo comando se stai usando Bash (che, ripeto, è già installato su MacOS):</p><pre><code>echo -e 'if command -v pyenv 1&gt;/dev/null 2&gt;&amp;1; then\n  eval "$(pyenv init -)"\nfi' &gt;&gt; ~/.bash_profile
</code></pre><p>Adesso resetta il tuo terminale eseguendo questo comando:</p><pre><code>reset</code></pre><h2 id="come-configurare-il-tuo-path-su-macos-per-pyenv-su-zsh-o-ohmyzsh"><strong>Come Configurare il tuo PATH su MacOS per pyenv su ZSH o OhMyZSH</strong></h2><p>Se invece di Bash, già installato su Mac, stai usando ZSH (o OhMyZSH) come me, potresti voler modificare il file <code>.zshrc</code>:</p><pre><code>echo 'export PYENV_ROOT="$HOME/.pyenv"' &gt;&gt; ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' &gt;&gt; ~/.zshrc</code></pre><p>Poi esegui questo:</p><pre><code>echo -e 'if command -v pyenv 1&gt;/dev/null 2&gt;&amp;1; then\n  eval "$(pyenv init --path)"\n  eval "$(pyenv init -)"\nfi' &gt;&gt; ~/.zshrc</code></pre><h2 id="come-impostare-una-versione-globale-predefinita-di-python-bash-o-zsh-"><strong>Come Impostare una Versione Globale Predefinita di Python (Bash o ZSH)</strong></h2><p>Puoi impostare la versione più recente di Python come globale, il che significa che sarà la versione predefinita di Python che MacOS usa quando esegui delle applicazioni di Python.</p><p>Esegui questo comando:</p><pre><code class="language-bash">pyenv global 3.9.2</code></pre><p>Di nuovo, puoi sostituire 3.9.2 con qualunque sia l'ultima versione.</p><p>Adesso puoi verificare che abbia funzionato controllando la versione globale di Python:</p><pre><code class="language-bash">pyenv versions</code></pre><p>Dovresti visualizzare questo output:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/freecodecamp_-_freecodecamp_MacBook-Pro_-_-zsh_-_84-24.png" class="kg-image" alt="freecodecamp_-_freecodecamp_MacBook-Pro_-_-zsh_-_84-24" width="600" height="400" loading="lazy"><figcaption>Il * significa che la versione adesso è quella globale predefinita.</figcaption></figure><h2 id="ultima-fase-chiudi-il-tuo-terminale-e-riavvialo"><strong>Ultima Fase: Chiudi il Tuo Terminale e Riavvialo</strong></h2><p>Dopo aver riavviato il tuo terminale, esegui il comando <code>python</code> e avvierai la nuova versione di Python invece di quella vecchia.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/freecodecamp_-_python_-_python_-_python_-_119-36.png" class="kg-image" alt="freecodecamp_-_python_-_python_-_python_-_119-36" width="600" height="400" loading="lazy"><figcaption>Yay. Python 3.9.2 e nessun avviso</figcaption></figure><p>Congratulazioni. Grazie per aver letto, e buona programmazione.</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
