<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://wiki.golem.linux.it/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=NeXtreme</id>
	<title>GolemWiki - Contributi utente [it]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.golem.linux.it/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=NeXtreme"/>
	<link rel="alternate" type="text/html" href="https://wiki.golem.linux.it/Speciale:Contributi/NeXtreme"/>
	<updated>2026-05-01T13:00:21Z</updated>
	<subtitle>Contributi utente</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://wiki.golem.linux.it/index.php?title=Python_Lezione_11_Giugno_2008&amp;diff=3753</id>
		<title>Python Lezione 11 Giugno 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.golem.linux.it/index.php?title=Python_Lezione_11_Giugno_2008&amp;diff=3753"/>
		<updated>2008-06-16T09:15:16Z</updated>

		<summary type="html">&lt;p&gt;NeXtreme: /* while */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;QUESTI APPUNTI SONO UNA BOZZA IN ATTESA DI CORREZIONE E, PER QUESTO, NON ATTENDIBILI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== while ==&lt;br /&gt;
&lt;br /&gt;
Simile al for, si usa per effettuare un ciclo di cui non sappiamo la lunghezza esatta, ovvero si cicla ''finché'' la condizione specificata non risulta vera.&lt;br /&gt;
Torna utile quando vogliamo fare cicli infiniti, che con il for non possiamo fare in maniera &amp;quot;pulita&amp;quot;&lt;br /&gt;
Può essere usato (a discapito della chiarezza) come un ciclo for: ad esempio, se volessimo ciclare 10 volte possiamo scrivere&lt;br /&gt;
&lt;br /&gt;
   a = 0&lt;br /&gt;
   while a &amp;lt; 10:&lt;br /&gt;
        print a&lt;br /&gt;
        a = a + 1 #oppure si può scrivere a += 1 (mi sembra ma verifico pu tardi su &amp;quot;IMPARARE PYTHON&amp;quot; ;-) )&lt;br /&gt;
&lt;br /&gt;
che è del tutto equivalente a &lt;br /&gt;
   for a in xrange(10):&lt;br /&gt;
       print a&lt;br /&gt;
&lt;br /&gt;
Altrimenti, per ciclare all'infinito&lt;br /&gt;
&lt;br /&gt;
  while True:&lt;br /&gt;
      print &amp;quot;y&amp;quot;&lt;br /&gt;
&lt;br /&gt;
che ha come effetto quello del programma ''yes'' dei sistemi *nix, ovvero stampa 'y' finchè non viene interrotto&lt;br /&gt;
&lt;br /&gt;
== Le funzioni ==&lt;br /&gt;
&lt;br /&gt;
quando noi abbiamo fatto il [[http://golem.linux.it/index.php/Lezione_4_Giugno#ESEMPIO_DELLA_SERATA: programma per calcolare le potenze]], abbiamo scritto diverse righe di codice.&lt;br /&gt;
Alcune di queste erano per recuperare e controllare l'input dell'utente, altre proprio per calcolare la potenza del numero.&lt;br /&gt;
Se nel corso del nostro programma ci servisse ripetere il calcolo della potenza base**esponente (facendo finta che non ci sia l'operatore ** che fa esattamente quello che vogliamo) potremmo&lt;br /&gt;
semplicemente fare copia-incolla di quelle righe ogni volta che ci servono. Poi ci accorgiamo che c'è un errore, che abbiamo quindi ripetuto n volte. E dobbiamo correggere n volte.&lt;br /&gt;
Se avessimo creato una funzione, invece, ci sarebbe una sola definizione e n chiamate: una volta trovato l'errore basta correggerlo una volta sola.&lt;br /&gt;
&lt;br /&gt;
La funzione di definisce usando ''def''.&lt;br /&gt;
Per crere una funzione dobbiamo scrivere: def -il nome della funzione- (-variabile1-,-variabile2-) : &lt;br /&gt;
es.&lt;br /&gt;
&lt;br /&gt;
  def potenza (base,esponente):&lt;br /&gt;
          result = 1&lt;br /&gt;
          for i in xrange(esponente):	&lt;br /&gt;
                  result=result*base&lt;br /&gt;
          return result&lt;br /&gt;
&lt;br /&gt;
return &amp;quot;ritorna&amp;quot; al chiamante il contenuto della variabile result.&lt;br /&gt;
&lt;br /&gt;
quindi il nostro programma diviene&lt;br /&gt;
  &lt;br /&gt;
  def potenza(base, esponente):&lt;br /&gt;
      result=1&lt;br /&gt;
      for i in xrange(esponente):&lt;br /&gt;
          result = result * base&lt;br /&gt;
      return result&lt;br /&gt;
&lt;br /&gt;
  base= raw_input (“inserisce la base:”)&lt;br /&gt;
  esponente=raw_input ('inserisci l\' esponente')&lt;br /&gt;
&lt;br /&gt;
  base=int(base)&lt;br /&gt;
  result=int(result)&lt;br /&gt;
&lt;br /&gt;
  print potenza(base, esponente)&lt;br /&gt;
&lt;br /&gt;
Vediamo come, se si omette anche uno o entrambi i parametri, viene generata una eccezione di tipo TypeError:&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; potenza()&lt;br /&gt;
  Traceback (most recent call last):&lt;br /&gt;
    File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
  TypeError: potenza() takes exactly 2 arguments (0 given)&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; potenza(2)&lt;br /&gt;
  Traceback (most recent call last):&lt;br /&gt;
    File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
  TypeError: potenza() takes exactly 2 arguments (1 given)&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; potenza (2,8)&lt;br /&gt;
  256&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se si desiderasse avere il comportamento del tipo &amp;quot;se manca uno dei due parametri allora si intende che la base è 2 e il parametro presente è l'esponente&amp;quot;,&lt;br /&gt;
potrei usare i paramatri di default:&lt;br /&gt;
  &lt;br /&gt;
  def potenza(esponente, base=2):&lt;br /&gt;
      result=1&lt;br /&gt;
      for i in xrange(esponente):&lt;br /&gt;
          result = result * base&lt;br /&gt;
      return result&lt;br /&gt;
&lt;br /&gt;
quindi a questo punto &lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; potenza(8)&lt;br /&gt;
  256&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da notare come i parametri di default devono necessariamente stare '''dopo''' i parametri che non hanno il valore di default.&lt;br /&gt;
&lt;br /&gt;
Potrei anche mettere entrambi i paramentri di default&lt;br /&gt;
&lt;br /&gt;
  def potenza(base=2, esponente=1):&lt;br /&gt;
      result=1&lt;br /&gt;
      for i in xrange(esponente):&lt;br /&gt;
          result = result * base&lt;br /&gt;
      return result&lt;br /&gt;
&lt;br /&gt;
In questo caso la chiamata&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; potenza()&lt;br /&gt;
  2&lt;br /&gt;
non genera l'eccezione perchè, avendo specificato per entrambi un valore di default l'interprete esegue 2**1 = 2&lt;br /&gt;
&lt;br /&gt;
Quando effettuo chiamate di funzione posso usare la keyword per rendere più chiaro il mio programma:&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; potenza(base=2, esponente=8)&lt;br /&gt;
  256&lt;br /&gt;
&lt;br /&gt;
In questo modo non mi devo ricordare l'ordine in cui sono stati definiti i parametri, e, rileggendo dopo mesi o anni il pezzo di codice, questo sarà sicuramente più chiaro.&lt;br /&gt;
Certe volte, per certi moduli, l'utilizzo delle keyword è indispensabile.&lt;br /&gt;
&lt;br /&gt;
== Moduli e import ==&lt;br /&gt;
&lt;br /&gt;
ammetto che qui mi sono persa.&lt;br /&gt;
&lt;br /&gt;
tutto è nato dalla domanda di raffaele:Quando creiamo il file, ecc....le variabili che validità hanno?&lt;br /&gt;
&lt;br /&gt;
abbiamo parlato del main, che non viene esguito se il file viene importato.&lt;br /&gt;
Abbiamo fatto degli esempi che io non ho avuto il tempo di copiare.&lt;br /&gt;
&lt;br /&gt;
Abbiamo anche parlato di dove il sistema va a cercare un file, del path, ecc...&lt;br /&gt;
Abbiamo fatto un esempio con un file chiamato python.tmp.py,&lt;br /&gt;
abbiamo detto come fare ad importarlo e abbiamo fatto un esempio pratico che ci faceva capire che, poichè il file era importato, non esguiva il main.Purtroppo mi sono persa l'esempio.&lt;br /&gt;
&lt;br /&gt;
== MODULI GANZI ==&lt;br /&gt;
abbiamo parlato di alcuni moduli con cui fare cose carine, mi sono persa la maggior parte degli esempi, ma metterò l'elenco dei moduli:&lt;br /&gt;
os&lt;br /&gt;
walk&lt;br /&gt;
mkdir&lt;br /&gt;
&lt;br /&gt;
== SOTTODIRECTORY ==&lt;br /&gt;
&lt;br /&gt;
qui ero in stato comatoso.Mi sono veramente eclissata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ESERCIZIO DELLA SERATA ==&lt;br /&gt;
Funzione che rivolta le stringhe.&lt;br /&gt;
abbiamo fatto vari tentativi ma poi ci siamo accorti che esiste la funzione reversed&lt;br /&gt;
&lt;br /&gt;
*mi sono persa la parte prima*&lt;br /&gt;
&lt;br /&gt;
  reversed(a)&lt;br /&gt;
  for elem in reversed(a):&lt;br /&gt;
          print elem&lt;/div&gt;</summary>
		<author><name>NeXtreme</name></author>
	</entry>
	<entry>
		<id>https://wiki.golem.linux.it/index.php?title=Python_Lezione_11_Giugno_2008&amp;diff=3752</id>
		<title>Python Lezione 11 Giugno 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.golem.linux.it/index.php?title=Python_Lezione_11_Giugno_2008&amp;diff=3752"/>
		<updated>2008-06-16T09:14:22Z</updated>

		<summary type="html">&lt;p&gt;NeXtreme: /* while */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;QUESTI APPUNTI SONO UNA BOZZA IN ATTESA DI CORREZIONE E, PER QUESTO, NON ATTENDIBILI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== while ==&lt;br /&gt;
&lt;br /&gt;
Simile al for, si usa per effettuare un ciclo di cui non sappiamo la lunghezza esatta, ovvero si cicla ''finché'' la condizione specificata non risulta vera.&lt;br /&gt;
Torna utile quando vogliamo fare cicli infiniti, che con il for non possiamo fare in maniera &amp;quot;pulita&amp;quot;&lt;br /&gt;
Può essere usato (a discapito della chiarezza) come un ciclo for: ad esempio, se volessimo ciclare 10 volte possiamo scrivere&lt;br /&gt;
&lt;br /&gt;
   a = 0&lt;br /&gt;
   while a &amp;lt; 10:&lt;br /&gt;
        print a&lt;br /&gt;
        a = a + 1 #oppure si può scrivere a += 1&lt;br /&gt;
&lt;br /&gt;
che è del tutto equivalente a &lt;br /&gt;
   for a in xrange(10):&lt;br /&gt;
       print a&lt;br /&gt;
&lt;br /&gt;
Altrimenti, per ciclare all'infinito&lt;br /&gt;
&lt;br /&gt;
  while True:&lt;br /&gt;
      print &amp;quot;y&amp;quot;&lt;br /&gt;
&lt;br /&gt;
che ha come effetto quello del programma ''yes'' dei sistemi *nix, ovvero stampa 'y' finchè non viene interrotto&lt;br /&gt;
&lt;br /&gt;
== Le funzioni ==&lt;br /&gt;
&lt;br /&gt;
quando noi abbiamo fatto il [[http://golem.linux.it/index.php/Lezione_4_Giugno#ESEMPIO_DELLA_SERATA: programma per calcolare le potenze]], abbiamo scritto diverse righe di codice.&lt;br /&gt;
Alcune di queste erano per recuperare e controllare l'input dell'utente, altre proprio per calcolare la potenza del numero.&lt;br /&gt;
Se nel corso del nostro programma ci servisse ripetere il calcolo della potenza base**esponente (facendo finta che non ci sia l'operatore ** che fa esattamente quello che vogliamo) potremmo&lt;br /&gt;
semplicemente fare copia-incolla di quelle righe ogni volta che ci servono. Poi ci accorgiamo che c'è un errore, che abbiamo quindi ripetuto n volte. E dobbiamo correggere n volte.&lt;br /&gt;
Se avessimo creato una funzione, invece, ci sarebbe una sola definizione e n chiamate: una volta trovato l'errore basta correggerlo una volta sola.&lt;br /&gt;
&lt;br /&gt;
La funzione di definisce usando ''def''.&lt;br /&gt;
Per crere una funzione dobbiamo scrivere: def -il nome della funzione- (-variabile1-,-variabile2-) : &lt;br /&gt;
es.&lt;br /&gt;
&lt;br /&gt;
  def potenza (base,esponente):&lt;br /&gt;
          result = 1&lt;br /&gt;
          for i in xrange(esponente):	&lt;br /&gt;
                  result=result*base&lt;br /&gt;
          return result&lt;br /&gt;
&lt;br /&gt;
return &amp;quot;ritorna&amp;quot; al chiamante il contenuto della variabile result.&lt;br /&gt;
&lt;br /&gt;
quindi il nostro programma diviene&lt;br /&gt;
  &lt;br /&gt;
  def potenza(base, esponente):&lt;br /&gt;
      result=1&lt;br /&gt;
      for i in xrange(esponente):&lt;br /&gt;
          result = result * base&lt;br /&gt;
      return result&lt;br /&gt;
&lt;br /&gt;
  base= raw_input (“inserisce la base:”)&lt;br /&gt;
  esponente=raw_input ('inserisci l\' esponente')&lt;br /&gt;
&lt;br /&gt;
  base=int(base)&lt;br /&gt;
  result=int(result)&lt;br /&gt;
&lt;br /&gt;
  print potenza(base, esponente)&lt;br /&gt;
&lt;br /&gt;
Vediamo come, se si omette anche uno o entrambi i parametri, viene generata una eccezione di tipo TypeError:&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; potenza()&lt;br /&gt;
  Traceback (most recent call last):&lt;br /&gt;
    File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
  TypeError: potenza() takes exactly 2 arguments (0 given)&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; potenza(2)&lt;br /&gt;
  Traceback (most recent call last):&lt;br /&gt;
    File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
  TypeError: potenza() takes exactly 2 arguments (1 given)&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; potenza (2,8)&lt;br /&gt;
  256&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se si desiderasse avere il comportamento del tipo &amp;quot;se manca uno dei due parametri allora si intende che la base è 2 e il parametro presente è l'esponente&amp;quot;,&lt;br /&gt;
potrei usare i paramatri di default:&lt;br /&gt;
  &lt;br /&gt;
  def potenza(esponente, base=2):&lt;br /&gt;
      result=1&lt;br /&gt;
      for i in xrange(esponente):&lt;br /&gt;
          result = result * base&lt;br /&gt;
      return result&lt;br /&gt;
&lt;br /&gt;
quindi a questo punto &lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; potenza(8)&lt;br /&gt;
  256&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da notare come i parametri di default devono necessariamente stare '''dopo''' i parametri che non hanno il valore di default.&lt;br /&gt;
&lt;br /&gt;
Potrei anche mettere entrambi i paramentri di default&lt;br /&gt;
&lt;br /&gt;
  def potenza(base=2, esponente=1):&lt;br /&gt;
      result=1&lt;br /&gt;
      for i in xrange(esponente):&lt;br /&gt;
          result = result * base&lt;br /&gt;
      return result&lt;br /&gt;
&lt;br /&gt;
In questo caso la chiamata&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; potenza()&lt;br /&gt;
  2&lt;br /&gt;
non genera l'eccezione perchè, avendo specificato per entrambi un valore di default l'interprete esegue 2**1 = 2&lt;br /&gt;
&lt;br /&gt;
Quando effettuo chiamate di funzione posso usare la keyword per rendere più chiaro il mio programma:&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; potenza(base=2, esponente=8)&lt;br /&gt;
  256&lt;br /&gt;
&lt;br /&gt;
In questo modo non mi devo ricordare l'ordine in cui sono stati definiti i parametri, e, rileggendo dopo mesi o anni il pezzo di codice, questo sarà sicuramente più chiaro.&lt;br /&gt;
Certe volte, per certi moduli, l'utilizzo delle keyword è indispensabile.&lt;br /&gt;
&lt;br /&gt;
== Moduli e import ==&lt;br /&gt;
&lt;br /&gt;
ammetto che qui mi sono persa.&lt;br /&gt;
&lt;br /&gt;
tutto è nato dalla domanda di raffaele:Quando creiamo il file, ecc....le variabili che validità hanno?&lt;br /&gt;
&lt;br /&gt;
abbiamo parlato del main, che non viene esguito se il file viene importato.&lt;br /&gt;
Abbiamo fatto degli esempi che io non ho avuto il tempo di copiare.&lt;br /&gt;
&lt;br /&gt;
Abbiamo anche parlato di dove il sistema va a cercare un file, del path, ecc...&lt;br /&gt;
Abbiamo fatto un esempio con un file chiamato python.tmp.py,&lt;br /&gt;
abbiamo detto come fare ad importarlo e abbiamo fatto un esempio pratico che ci faceva capire che, poichè il file era importato, non esguiva il main.Purtroppo mi sono persa l'esempio.&lt;br /&gt;
&lt;br /&gt;
== MODULI GANZI ==&lt;br /&gt;
abbiamo parlato di alcuni moduli con cui fare cose carine, mi sono persa la maggior parte degli esempi, ma metterò l'elenco dei moduli:&lt;br /&gt;
os&lt;br /&gt;
walk&lt;br /&gt;
mkdir&lt;br /&gt;
&lt;br /&gt;
== SOTTODIRECTORY ==&lt;br /&gt;
&lt;br /&gt;
qui ero in stato comatoso.Mi sono veramente eclissata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ESERCIZIO DELLA SERATA ==&lt;br /&gt;
Funzione che rivolta le stringhe.&lt;br /&gt;
abbiamo fatto vari tentativi ma poi ci siamo accorti che esiste la funzione reversed&lt;br /&gt;
&lt;br /&gt;
*mi sono persa la parte prima*&lt;br /&gt;
&lt;br /&gt;
  reversed(a)&lt;br /&gt;
  for elem in reversed(a):&lt;br /&gt;
          print elem&lt;/div&gt;</summary>
		<author><name>NeXtreme</name></author>
	</entry>
	<entry>
		<id>https://wiki.golem.linux.it/index.php?title=Python_Lezione_4_Giugno_2008&amp;diff=3734</id>
		<title>Python Lezione 4 Giugno 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.golem.linux.it/index.php?title=Python_Lezione_4_Giugno_2008&amp;diff=3734"/>
		<updated>2008-06-09T10:11:27Z</updated>

		<summary type="html">&lt;p&gt;NeXtreme: /* LE STRINGHE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Python ==&lt;br /&gt;
[http://www.python.it/ Python] è un linguaggio di programmazione [http://it.wikipedia.org/wiki/Interprete_(informatica) interpretato].&lt;br /&gt;
Il linuaggio interpretato è simile agli altri linguaggi in circolazione ma, invece di essere trasformato direttamente in codice binario dal meccanismo automatico, viene interpretato da questo e poi mandato all'hardware.&lt;br /&gt;
Un linguaggio interpretato non ha bisogno di essere ricompilato: il codice scritto viene interpretato da un interprete a run-time (tempo di esecuzione) e tradotto al volo nel linguaggio macchina.&lt;br /&gt;
Quindi i programmi python possono girare su qualsiasi hardware e sistema operativo su cui è stato portato l'interprete. Ovviamente, questa cosa si paga sul tempo di esecuzione pure: l'approccio ha si i suoi vantaggi, ma rispetto a un linguaggio compilato direttamente in linguaggio macchina per creare un eseguibile, python e gli altri liguaggi interpretati risultano essere più lenti.&lt;br /&gt;
&lt;br /&gt;
Esistono vari interpreti: [http://www.python.org Cpython], o classic python, è l'interprete &amp;quot;ufficiale&amp;quot;, scritto in C e disponibile per linux, mac e windows.&lt;br /&gt;
[http://www.jython.org/Project/ Jython] è un interprete scritto al 100% in Java, e si interfaccia strettamente ai programmi e alla libreria Java, &lt;br /&gt;
[http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython IronPython] è un interprete python che gira sulla piattaforma .NET mentre &lt;br /&gt;
[http://codespeak.net/pypy/dist/pypy/doc/home.html PyPy] è (anche) un interprete python scritto in.. python&lt;br /&gt;
&lt;br /&gt;
La prima riga di ogni script python deve iniziare con #!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
il #! del file fa capire al sistema operativo (solo su sistemi posix, quindi unix/linux) che quello non è un file di testo ma un eseguibile da eseguire con l'inteprete python.&lt;br /&gt;
&lt;br /&gt;
== COMMENTI ==&lt;br /&gt;
&lt;br /&gt;
: sono righe che l'interprete salta e non legge &lt;br /&gt;
es: &lt;br /&gt;
    ''# stampa:”hello word”''&lt;br /&gt;
&lt;br /&gt;
== PRINT ==&lt;br /&gt;
Lo statement [http://docs.python.org/ref/print.html print] valuta tutte le espressioni presenti e quindi le stampa a video.&lt;br /&gt;
L'espressione da valutare può essere anche un semplice numero o una semplice stringa&lt;br /&gt;
&lt;br /&gt;
    ''print 3''&lt;br /&gt;
stampa 3, e anche se scrivo&lt;br /&gt;
    '' print “3”''&lt;br /&gt;
stampa lo stesso anche se abbiamo passato prima un intero, poi una stringa.&lt;br /&gt;
Questo è normale, perchè il numero &amp;quot;tre&amp;quot; viene rappresentato dal simbolo 3 nel sistema decimale.&lt;br /&gt;
&lt;br /&gt;
Invece, se scrivo&lt;br /&gt;
    ''print 3+2''&lt;br /&gt;
otteniamo a video 5: l'inteprete ha valutato l'espressione, ha eseguito la somma e stampato il situlato.&lt;br /&gt;
Mentre se scriviamo&lt;br /&gt;
    ''print “3+2”''&lt;br /&gt;
il risolutato è &lt;br /&gt;
    ''3+2''&lt;br /&gt;
in quanto abbiamo passato la stringa composta dal carattere 3, dal simbolo + e dal carattere 2.&lt;br /&gt;
&lt;br /&gt;
Le variabili in python non devono essere dichiarate: esistono dalla prima volta in cui gli viene assegnato un valore&lt;br /&gt;
    ''messaggio=”hello world”''&lt;br /&gt;
    ''print messaggio''&lt;br /&gt;
se questo programma viene eseguito il risultatato sarà:&lt;br /&gt;
''hello world''&lt;br /&gt;
l'interprete valuta l'espressione ''messaggio'' e stampa il suo contenuto&lt;br /&gt;
&lt;br /&gt;
== ECCEZIONE ==&lt;br /&gt;
:se io commento la definizione di messaggio (es: ''# messaggio = &amp;quot; hello world &amp;quot;'' ) il programma non sa cos'è messaggio e se scrivo:&lt;br /&gt;
    ''print messaggio''&lt;br /&gt;
il risultato sarà:name error, che, viene chiamato eccezione.&lt;br /&gt;
&lt;br /&gt;
== LE STRINGHE ==&lt;br /&gt;
Gli oggetti di tipo stringa supportano svariati metodi e proprietà. E' da notare che le stringhe sono immutabili.&lt;br /&gt;
Se una stringa viene dichiarata la seconda volta, quella precedente viene buttata, non viene modificata per fare spazio alla nuova.&lt;br /&gt;
    ''messaggio=”ciao”&lt;br /&gt;
    messaggio=”ciao mondo”&lt;br /&gt;
    print messaggio''&lt;br /&gt;
stampa&lt;br /&gt;
    '' ciao mondo''&lt;br /&gt;
&lt;br /&gt;
In Python non si possono sommare cose diverse, o meglio, lo posso fare solo se è definita una conversione tra i due tipo.&lt;br /&gt;
Le stringhe supportano anche alcuni operatori base:&lt;br /&gt;
    ''print messaggio*2'' &lt;br /&gt;
l'esecuzione darà&lt;br /&gt;
    ''messaggio messaggio&lt;br /&gt;
''&lt;br /&gt;
esempio:&lt;br /&gt;
     ''Print “ciao”+” mondo”''&lt;br /&gt;
lo eseguo e mi darà:&lt;br /&gt;
    '' ciao mondo''&lt;br /&gt;
&lt;br /&gt;
== '''Funzione DIR''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ''messaggio=”ciao”&lt;br /&gt;
    dir(messaggio)''&lt;br /&gt;
a questo punto il programma da una serie di caratteri incomprensibili.&lt;br /&gt;
Praticamente dà i '''metodi''' che suporta la stringa messaggio.&lt;br /&gt;
&lt;br /&gt;
== I '''metodi''' ==&lt;br /&gt;
sono operazioni che i vari oggetti supportano.&lt;br /&gt;
alcuni metodi, vedendo con la funzione dir(), iniziano e terminano con __ . Tali metodi, chiamati metodi speciali, non dovrebbero essere chiamati direttamente,&lt;br /&gt;
senza che ci sia una ragione specifica per farlo (ovvero: sapete quello che state facendo). In generale possono essere pensati come privati o riservati, anche se non &lt;br /&gt;
essendoci controlli di accesso come in altri linguaggi (public private del java o del c++ ad esempio) nessuno vieta di chiamarli.&lt;br /&gt;
&lt;br /&gt;
Ad esempio, il metodo __add__ delle stringhe è chiamato quando si fa la somma di due stringhe.&lt;br /&gt;
 ''&amp;quot;ciao&amp;quot; + &amp;quot; mondo&amp;quot;'' &lt;br /&gt;
chiama in realtà &lt;br /&gt;
 ''&amp;quot;ciao&amp;quot;.__add__(&amp;quot; mondo&amp;quot;)''&lt;br /&gt;
&lt;br /&gt;
''__ doc__'' ce l'hanno tutti gli oggetti (stringhe, interi...), e contiene una stringa di documentazione dell'oggetto. &lt;br /&gt;
&lt;br /&gt;
i metodi che iniziano per is servono per controllare se una certa proprietà della stringa in esame è vera:&lt;br /&gt;
es: &lt;br /&gt;
    ''messaggio.isalpha()''&lt;br /&gt;
mi dice se messaggio è o meno alfanumerico (composto solo da numeri e cifre, senza spazi, tab, ritorno carrello ecc ecc).&lt;br /&gt;
isalpha è un oggetto quindi ha le proprietà doc .&lt;br /&gt;
se io scrivo&lt;br /&gt;
    ''messaggio.isalpha.__doc__''&lt;br /&gt;
mi dice che fa.&lt;br /&gt;
&lt;br /&gt;
es:&lt;br /&gt;
    '' messaggio=”gigio”&lt;br /&gt;
    messaggio2= messaggio.upper()''&lt;br /&gt;
&lt;br /&gt;
es:&lt;br /&gt;
''TYPE(3)''&lt;br /&gt;
mi dice che variabile  è. se è intero o stringa oppure un complesso, un float o un tipo definito dall'utente.&lt;br /&gt;
Se io scrivo ''DIR(3)''&lt;br /&gt;
mi da tutta la lista dei metodi e delle proprietà degli int (dato che 3 è in intero)&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Esistono stringhe, interi, float (numeri con virgola)booleano (che ha due valori, vero o falso, True e False)e i vari contenitori:&lt;br /&gt;
&lt;br /&gt;
== '''LE LISTE''' ==&lt;br /&gt;
&lt;br /&gt;
es. lo scaffale ha I pc, I pc sono oggetti (pc1,pc2...).Se voglio uno scaffale di pc senza dare I nomi a tutti gli oggetti, definisco lo scaffale.&lt;br /&gt;
Lo scaffale si chiama''' Lista'''  .si usano le parentesi quadre con oggetti separati da virgola&lt;br /&gt;
es.    '' a = [ “pc1” , “schermo rotto” , 2]&lt;br /&gt;
dir (scaffale)''&lt;br /&gt;
da la lista dei metodi, da qui si capisce che la lista è un oggetto.&lt;br /&gt;
Se io faccio&lt;br /&gt;
    ''b = dir (a)''&lt;br /&gt;
o&lt;br /&gt;
    ''a.append(“4”)''&lt;br /&gt;
aggiunge alla lista a il 4.&lt;br /&gt;
'''la lista MUTA!'''&lt;br /&gt;
Se faccio     ''print (“a”)''&lt;br /&gt;
mi da la lista degli oggetti più il 4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''TUPLE''' ==&lt;br /&gt;
&lt;br /&gt;
è una lista non mutabile.&lt;br /&gt;
La tupla è molto piu veloce rispetto alla lista.&lt;br /&gt;
Con tuple si usano le parentesi tonde.&lt;br /&gt;
&lt;br /&gt;
== '''DIZIONARI''' ==&lt;br /&gt;
&lt;br /&gt;
il dizionario si definisce con le parentesi graffe {chiave:valore, chiave:valore}&lt;br /&gt;
a{chiave}&lt;br /&gt;
da il valore associato alla chiave.&lt;br /&gt;
&lt;br /&gt;
Dizionari liste e tuple sono dele sequenze e sono iterable e si possono scorrere.&lt;br /&gt;
&lt;br /&gt;
== '''If elif else''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if condizione :&lt;br /&gt;
&lt;br /&gt;
indentato roba da fare se vero.&lt;br /&gt;
&lt;br /&gt;
Python supporta o tab o spazio, si decide quanti tab o spazi alla prima indentazione.&lt;br /&gt;
Meglio lo spazio perchè in futuro I tab verranno lasciati.&lt;br /&gt;
Di solito si usa 4 spazi.&lt;br /&gt;
Non c'è la graffa in pyton o I begin o gli end, si chiude e si apre la riga solo se si indenta.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
    ''a=3&lt;br /&gt;
    b=1''&lt;br /&gt;
&lt;br /&gt;
    ''if a &amp;gt;b:&lt;br /&gt;
      print (“ a è maggiore di b”)&lt;br /&gt;
    elif a==b:&lt;br /&gt;
      print (“ a è uguale a b”)&lt;br /&gt;
    else:&lt;br /&gt;
       print(“b è maggiore di a”)''&lt;br /&gt;
&lt;br /&gt;
in questo programma definisco due valori, a e b.&lt;br /&gt;
Chiedo al programma se aè maggiore di b di scrivere : a è maggiore di b, se a è uguale a b di scrivere che a è uguale a b e in tutte le altre condizioni (else) di scrivere che a è minore di b.&lt;br /&gt;
&lt;br /&gt;
	'''2.is, is not or, and,!='''&lt;br /&gt;
    ''if a is 1:&lt;br /&gt;
      print (“si”)&lt;br /&gt;
    elif a is not 1:&lt;br /&gt;
      print (“no”)&lt;br /&gt;
&lt;br /&gt;
    if a is 1 and b is 3:&lt;br /&gt;
      print (“si”)&lt;br /&gt;
&lt;br /&gt;
    if a is 1 or b is 3:&lt;br /&gt;
      print (“okkei”)&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
'''!= è il diverso.'''&lt;br /&gt;
&lt;br /&gt;
== '''append, insert''' ==&lt;br /&gt;
&lt;br /&gt;
    ''a.append(“4”)''&lt;br /&gt;
aggiunge alla lista a il 4.&lt;br /&gt;
Se faccio print (“a”)&lt;br /&gt;
mi da la lista degli oggetti più il 4.&lt;br /&gt;
&lt;br /&gt;
con '''insert''' devo inserire anche la posizione&lt;br /&gt;
    ''a.insert(2,34)''&lt;br /&gt;
mette il 34 in posizione 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''for''' ==&lt;br /&gt;
&lt;br /&gt;
specifica un ciclo, fa le cose tante volte fino ad una condizione.&lt;br /&gt;
For variabile in una sequenza di qualche tipo.&lt;br /&gt;
Es:     ''for elemento in a:&lt;br /&gt;
               print elemento''&lt;br /&gt;
&lt;br /&gt;
es b è una tupla.&lt;br /&gt;
Allora posso scrivere:&lt;br /&gt;
    ''for elem in b&lt;br /&gt;
         print “altro elemento”&lt;br /&gt;
         “print elem”''&lt;br /&gt;
&lt;br /&gt;
elem o qualsiasi altro nome gli dia è ogni elemento dentro la tupla o lista o dizionario.&lt;br /&gt;
&lt;br /&gt;
Se io voglio sia la chiave sia il valore in un dizionario (se metto elem mi mette solo la chiave) posso fare:&lt;br /&gt;
for chiave in a:&lt;br /&gt;
	    ''print “chiave: “ + chiave&lt;br /&gt;
	    print “valore: “ + a[chiave]''&lt;br /&gt;
&lt;br /&gt;
'''DOPO I DUE PUNTI METTO SEMPRE IL TAB.'''&lt;br /&gt;
&lt;br /&gt;
== '''xrange''' ==&lt;br /&gt;
&lt;br /&gt;
xrange è un iterable di dieci elementi con il primo valore uguale a 0 .E' una lista ma non ha le proprietà di una lista.&lt;br /&gt;
se io voglio fare un for da uno a dieci (cioè la somma da uno a 10)&lt;br /&gt;
&lt;br /&gt;
es:     ''for I xrange(10)&lt;br /&gt;
               print I''&lt;br /&gt;
lui stampa&lt;br /&gt;
''1&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
4&lt;br /&gt;
5&lt;br /&gt;
6&lt;br /&gt;
7&lt;br /&gt;
8&lt;br /&gt;
9&lt;br /&gt;
10''&lt;br /&gt;
&lt;br /&gt;
== '''range''' ==&lt;br /&gt;
&lt;br /&gt;
è una lista.se io scrivo:&lt;br /&gt;
    ''print range(10)''&lt;br /&gt;
lui mi da     ''[0,1,2,3,4,5,6,7,8,9].''&lt;br /&gt;
è più lento di xrange e poi sta morendo&lt;br /&gt;
&lt;br /&gt;
== '''len''' ==&lt;br /&gt;
&lt;br /&gt;
    ''len (a)''&lt;br /&gt;
da la lunghezza della stringa&lt;br /&gt;
&lt;br /&gt;
== '''enumerate''' ==&lt;br /&gt;
&lt;br /&gt;
se io ho una lista di tre elmenti&lt;br /&gt;
''a=[“ciao”,”bel”, “mondo”]''&lt;br /&gt;
&lt;br /&gt;
''for I, elem in enumerate(a):&lt;br /&gt;
     print str(I) + “:” + elem&lt;br /&gt;
''&lt;br /&gt;
da la posizione corrente di ogni elemento.&lt;br /&gt;
''0:ciao&lt;br /&gt;
1:bel&lt;br /&gt;
2:mondo''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''raw_input''' ==&lt;br /&gt;
&lt;br /&gt;
dai il valore.&lt;br /&gt;
''Base= raw_input (“inserisce la base:”)&lt;br /&gt;
esponente=raw_input (“inserisci l'/ esponente”)''&lt;br /&gt;
&lt;br /&gt;
ti chiede il valore di base ed esponente.&lt;br /&gt;
&lt;br /&gt;
== '''Int''' ==&lt;br /&gt;
&lt;br /&gt;
forza il fatto che quel valore sia un intero.&lt;br /&gt;
''&lt;br /&gt;
Es:base=int(base)&lt;br /&gt;
  result=int(result)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''UPPER,LOWER,CAPITALIZE''' ==&lt;br /&gt;
&lt;br /&gt;
'''capitalize''' è un comando che sulla la stringa su cui viene applicato ,prende la prima lettera dopo gli spazi e ci mette la maiuscola&lt;br /&gt;
&lt;br /&gt;
es: &lt;br /&gt;
    ''print “ciao mondo”.capitalize()''&lt;br /&gt;
    ''Ciao mondo''&lt;br /&gt;
es: &lt;br /&gt;
    ''print “ciao mondo”.title()&lt;br /&gt;
    Ciao Mondo''&lt;br /&gt;
&lt;br /&gt;
'''LOWER:''' prende la striga e emette tutto minuscolo&lt;br /&gt;
'''UPPER:''' il contrario di lower&lt;br /&gt;
&lt;br /&gt;
== '''ESEMPIO DELLA SERATA:''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calcolo di una potenza.&lt;br /&gt;
&lt;br /&gt;
    ''&lt;br /&gt;
    base= raw_input (“inserisce la base:”)&lt;br /&gt;
    esponente=raw_input ('inserisci l\' esponente')&lt;br /&gt;
&lt;br /&gt;
    base=int(base)&lt;br /&gt;
    result=int(result)&lt;br /&gt;
&lt;br /&gt;
    result=1&lt;br /&gt;
    for i in xrange(esponente):&lt;br /&gt;
         result = result * base&lt;br /&gt;
    print result''&lt;br /&gt;
&lt;br /&gt;
il [http://docs.python.org/lib/built-in-funcs.html built-in] int() è necessario, dato che tutto quello che proviene dalla tastiera viene acquisito da raw_input() come stringa. Dato che dobbiamo usarli come interi, occorre effettuare un cast, ovvero&lt;br /&gt;
una trasformazione di tipo, da stringa a intero.&lt;br /&gt;
E' interessante notare che int() non cerca di fare i miracoli: provate a vedere cosa succede se cercate di convertire &amp;quot;awlerorj&amp;quot; in int!&lt;/div&gt;</summary>
		<author><name>NeXtreme</name></author>
	</entry>
	<entry>
		<id>https://wiki.golem.linux.it/index.php?title=Python_Lezione_4_Giugno_2008&amp;diff=3733</id>
		<title>Python Lezione 4 Giugno 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.golem.linux.it/index.php?title=Python_Lezione_4_Giugno_2008&amp;diff=3733"/>
		<updated>2008-06-09T10:10:27Z</updated>

		<summary type="html">&lt;p&gt;NeXtreme: /* ECCEZIONE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Python ==&lt;br /&gt;
[http://www.python.it/ Python] è un linguaggio di programmazione [http://it.wikipedia.org/wiki/Interprete_(informatica) interpretato].&lt;br /&gt;
Il linuaggio interpretato è simile agli altri linguaggi in circolazione ma, invece di essere trasformato direttamente in codice binario dal meccanismo automatico, viene interpretato da questo e poi mandato all'hardware.&lt;br /&gt;
Un linguaggio interpretato non ha bisogno di essere ricompilato: il codice scritto viene interpretato da un interprete a run-time (tempo di esecuzione) e tradotto al volo nel linguaggio macchina.&lt;br /&gt;
Quindi i programmi python possono girare su qualsiasi hardware e sistema operativo su cui è stato portato l'interprete. Ovviamente, questa cosa si paga sul tempo di esecuzione pure: l'approccio ha si i suoi vantaggi, ma rispetto a un linguaggio compilato direttamente in linguaggio macchina per creare un eseguibile, python e gli altri liguaggi interpretati risultano essere più lenti.&lt;br /&gt;
&lt;br /&gt;
Esistono vari interpreti: [http://www.python.org Cpython], o classic python, è l'interprete &amp;quot;ufficiale&amp;quot;, scritto in C e disponibile per linux, mac e windows.&lt;br /&gt;
[http://www.jython.org/Project/ Jython] è un interprete scritto al 100% in Java, e si interfaccia strettamente ai programmi e alla libreria Java, &lt;br /&gt;
[http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython IronPython] è un interprete python che gira sulla piattaforma .NET mentre &lt;br /&gt;
[http://codespeak.net/pypy/dist/pypy/doc/home.html PyPy] è (anche) un interprete python scritto in.. python&lt;br /&gt;
&lt;br /&gt;
La prima riga di ogni script python deve iniziare con #!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
il #! del file fa capire al sistema operativo (solo su sistemi posix, quindi unix/linux) che quello non è un file di testo ma un eseguibile da eseguire con l'inteprete python.&lt;br /&gt;
&lt;br /&gt;
== COMMENTI ==&lt;br /&gt;
&lt;br /&gt;
: sono righe che l'interprete salta e non legge &lt;br /&gt;
es: &lt;br /&gt;
    ''# stampa:”hello word”''&lt;br /&gt;
&lt;br /&gt;
== PRINT ==&lt;br /&gt;
Lo statement [http://docs.python.org/ref/print.html print] valuta tutte le espressioni presenti e quindi le stampa a video.&lt;br /&gt;
L'espressione da valutare può essere anche un semplice numero o una semplice stringa&lt;br /&gt;
&lt;br /&gt;
    ''print 3''&lt;br /&gt;
stampa 3, e anche se scrivo&lt;br /&gt;
    '' print “3”''&lt;br /&gt;
stampa lo stesso anche se abbiamo passato prima un intero, poi una stringa.&lt;br /&gt;
Questo è normale, perchè il numero &amp;quot;tre&amp;quot; viene rappresentato dal simbolo 3 nel sistema decimale.&lt;br /&gt;
&lt;br /&gt;
Invece, se scrivo&lt;br /&gt;
    ''print 3+2''&lt;br /&gt;
otteniamo a video 5: l'inteprete ha valutato l'espressione, ha eseguito la somma e stampato il situlato.&lt;br /&gt;
Mentre se scriviamo&lt;br /&gt;
    ''print “3+2”''&lt;br /&gt;
il risolutato è &lt;br /&gt;
    ''3+2''&lt;br /&gt;
in quanto abbiamo passato la stringa composta dal carattere 3, dal simbolo + e dal carattere 2.&lt;br /&gt;
&lt;br /&gt;
Le variabili in python non devono essere dichiarate: esistono dalla prima volta in cui gli viene assegnato un valore&lt;br /&gt;
    ''messaggio=”hello world”''&lt;br /&gt;
    ''print messaggio''&lt;br /&gt;
se questo programma viene eseguito il risultatato sarà:&lt;br /&gt;
''hello world''&lt;br /&gt;
l'interprete valuta l'espressione ''messaggio'' e stampa il suo contenuto&lt;br /&gt;
&lt;br /&gt;
== ECCEZIONE ==&lt;br /&gt;
:se io commento la definizione di messaggio (es: ''# messaggio = &amp;quot; hello world &amp;quot;'' ) il programma non sa cos'è messaggio e se scrivo:&lt;br /&gt;
    ''print messaggio''&lt;br /&gt;
il risultato sarà:name error, che, viene chiamato eccezione.&lt;br /&gt;
&lt;br /&gt;
== LE STRINGHE ==&lt;br /&gt;
Gli oggetti di tipo stringa supportano svariati metodi e proprietà. E' da notare che le stringhe sono immutabili.&lt;br /&gt;
Se una stringa viene dichiarata la seconda volta, quella precedente viene buttata, non viene modificata per fare spazio alla nuova.&lt;br /&gt;
    ''messaggio=”ciao”&lt;br /&gt;
    messaggio=”ciao mondo”&lt;br /&gt;
    print “messaggio”''&lt;br /&gt;
stampa&lt;br /&gt;
    '' ciao mondo''&lt;br /&gt;
&lt;br /&gt;
In Python non si possono sommare cose diverse, o meglio, lo posso fare solo se è definita una conversione tra i due tipo.&lt;br /&gt;
Le stringhe supportano anche alcuni operatori base:&lt;br /&gt;
    ''print messaggio*2'' &lt;br /&gt;
l'esecuzione darà&lt;br /&gt;
    ''messaggio messaggio&lt;br /&gt;
''&lt;br /&gt;
esempio:&lt;br /&gt;
     ''Print “ciao”+” mondo”''&lt;br /&gt;
lo eseguo e mi darà:&lt;br /&gt;
    '' ciao mondo''&lt;br /&gt;
&lt;br /&gt;
== '''Funzione DIR''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ''messaggio=”ciao”&lt;br /&gt;
    dir(messaggio)''&lt;br /&gt;
a questo punto il programma da una serie di caratteri incomprensibili.&lt;br /&gt;
Praticamente dà i '''metodi''' che suporta la stringa messaggio.&lt;br /&gt;
&lt;br /&gt;
== I '''metodi''' ==&lt;br /&gt;
sono operazioni che i vari oggetti supportano.&lt;br /&gt;
alcuni metodi, vedendo con la funzione dir(), iniziano e terminano con __ . Tali metodi, chiamati metodi speciali, non dovrebbero essere chiamati direttamente,&lt;br /&gt;
senza che ci sia una ragione specifica per farlo (ovvero: sapete quello che state facendo). In generale possono essere pensati come privati o riservati, anche se non &lt;br /&gt;
essendoci controlli di accesso come in altri linguaggi (public private del java o del c++ ad esempio) nessuno vieta di chiamarli.&lt;br /&gt;
&lt;br /&gt;
Ad esempio, il metodo __add__ delle stringhe è chiamato quando si fa la somma di due stringhe.&lt;br /&gt;
 ''&amp;quot;ciao&amp;quot; + &amp;quot; mondo&amp;quot;'' &lt;br /&gt;
chiama in realtà &lt;br /&gt;
 ''&amp;quot;ciao&amp;quot;.__add__(&amp;quot; mondo&amp;quot;)''&lt;br /&gt;
&lt;br /&gt;
''__ doc__'' ce l'hanno tutti gli oggetti (stringhe, interi...), e contiene una stringa di documentazione dell'oggetto. &lt;br /&gt;
&lt;br /&gt;
i metodi che iniziano per is servono per controllare se una certa proprietà della stringa in esame è vera:&lt;br /&gt;
es: &lt;br /&gt;
    ''messaggio.isalpha()''&lt;br /&gt;
mi dice se messaggio è o meno alfanumerico (composto solo da numeri e cifre, senza spazi, tab, ritorno carrello ecc ecc).&lt;br /&gt;
isalpha è un oggetto quindi ha le proprietà doc .&lt;br /&gt;
se io scrivo&lt;br /&gt;
    ''messaggio.isalpha.__doc__''&lt;br /&gt;
mi dice che fa.&lt;br /&gt;
&lt;br /&gt;
es:&lt;br /&gt;
    '' messaggio=”gigio”&lt;br /&gt;
    messaggio2= messaggio.upper()''&lt;br /&gt;
&lt;br /&gt;
es:&lt;br /&gt;
''TYPE(3)''&lt;br /&gt;
mi dice che variabile  è. se è intero o stringa oppure un complesso, un float o un tipo definito dall'utente.&lt;br /&gt;
Se io scrivo ''DIR(3)''&lt;br /&gt;
mi da tutta la lista dei metodi e delle proprietà degli int (dato che 3 è in intero)&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Esistono stringhe, interi, float (numeri con virgola)booleano (che ha due valori, vero o falso, True e False)e i vari contenitori:&lt;br /&gt;
&lt;br /&gt;
== '''LE LISTE''' ==&lt;br /&gt;
&lt;br /&gt;
es. lo scaffale ha I pc, I pc sono oggetti (pc1,pc2...).Se voglio uno scaffale di pc senza dare I nomi a tutti gli oggetti, definisco lo scaffale.&lt;br /&gt;
Lo scaffale si chiama''' Lista'''  .si usano le parentesi quadre con oggetti separati da virgola&lt;br /&gt;
es.    '' a = [ “pc1” , “schermo rotto” , 2]&lt;br /&gt;
dir (scaffale)''&lt;br /&gt;
da la lista dei metodi, da qui si capisce che la lista è un oggetto.&lt;br /&gt;
Se io faccio&lt;br /&gt;
    ''b = dir (a)''&lt;br /&gt;
o&lt;br /&gt;
    ''a.append(“4”)''&lt;br /&gt;
aggiunge alla lista a il 4.&lt;br /&gt;
'''la lista MUTA!'''&lt;br /&gt;
Se faccio     ''print (“a”)''&lt;br /&gt;
mi da la lista degli oggetti più il 4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''TUPLE''' ==&lt;br /&gt;
&lt;br /&gt;
è una lista non mutabile.&lt;br /&gt;
La tupla è molto piu veloce rispetto alla lista.&lt;br /&gt;
Con tuple si usano le parentesi tonde.&lt;br /&gt;
&lt;br /&gt;
== '''DIZIONARI''' ==&lt;br /&gt;
&lt;br /&gt;
il dizionario si definisce con le parentesi graffe {chiave:valore, chiave:valore}&lt;br /&gt;
a{chiave}&lt;br /&gt;
da il valore associato alla chiave.&lt;br /&gt;
&lt;br /&gt;
Dizionari liste e tuple sono dele sequenze e sono iterable e si possono scorrere.&lt;br /&gt;
&lt;br /&gt;
== '''If elif else''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if condizione :&lt;br /&gt;
&lt;br /&gt;
indentato roba da fare se vero.&lt;br /&gt;
&lt;br /&gt;
Python supporta o tab o spazio, si decide quanti tab o spazi alla prima indentazione.&lt;br /&gt;
Meglio lo spazio perchè in futuro I tab verranno lasciati.&lt;br /&gt;
Di solito si usa 4 spazi.&lt;br /&gt;
Non c'è la graffa in pyton o I begin o gli end, si chiude e si apre la riga solo se si indenta.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
    ''a=3&lt;br /&gt;
    b=1''&lt;br /&gt;
&lt;br /&gt;
    ''if a &amp;gt;b:&lt;br /&gt;
      print (“ a è maggiore di b”)&lt;br /&gt;
    elif a==b:&lt;br /&gt;
      print (“ a è uguale a b”)&lt;br /&gt;
    else:&lt;br /&gt;
       print(“b è maggiore di a”)''&lt;br /&gt;
&lt;br /&gt;
in questo programma definisco due valori, a e b.&lt;br /&gt;
Chiedo al programma se aè maggiore di b di scrivere : a è maggiore di b, se a è uguale a b di scrivere che a è uguale a b e in tutte le altre condizioni (else) di scrivere che a è minore di b.&lt;br /&gt;
&lt;br /&gt;
	'''2.is, is not or, and,!='''&lt;br /&gt;
    ''if a is 1:&lt;br /&gt;
      print (“si”)&lt;br /&gt;
    elif a is not 1:&lt;br /&gt;
      print (“no”)&lt;br /&gt;
&lt;br /&gt;
    if a is 1 and b is 3:&lt;br /&gt;
      print (“si”)&lt;br /&gt;
&lt;br /&gt;
    if a is 1 or b is 3:&lt;br /&gt;
      print (“okkei”)&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
'''!= è il diverso.'''&lt;br /&gt;
&lt;br /&gt;
== '''append, insert''' ==&lt;br /&gt;
&lt;br /&gt;
    ''a.append(“4”)''&lt;br /&gt;
aggiunge alla lista a il 4.&lt;br /&gt;
Se faccio print (“a”)&lt;br /&gt;
mi da la lista degli oggetti più il 4.&lt;br /&gt;
&lt;br /&gt;
con '''insert''' devo inserire anche la posizione&lt;br /&gt;
    ''a.insert(2,34)''&lt;br /&gt;
mette il 34 in posizione 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''for''' ==&lt;br /&gt;
&lt;br /&gt;
specifica un ciclo, fa le cose tante volte fino ad una condizione.&lt;br /&gt;
For variabile in una sequenza di qualche tipo.&lt;br /&gt;
Es:     ''for elemento in a:&lt;br /&gt;
               print elemento''&lt;br /&gt;
&lt;br /&gt;
es b è una tupla.&lt;br /&gt;
Allora posso scrivere:&lt;br /&gt;
    ''for elem in b&lt;br /&gt;
         print “altro elemento”&lt;br /&gt;
         “print elem”''&lt;br /&gt;
&lt;br /&gt;
elem o qualsiasi altro nome gli dia è ogni elemento dentro la tupla o lista o dizionario.&lt;br /&gt;
&lt;br /&gt;
Se io voglio sia la chiave sia il valore in un dizionario (se metto elem mi mette solo la chiave) posso fare:&lt;br /&gt;
for chiave in a:&lt;br /&gt;
	    ''print “chiave: “ + chiave&lt;br /&gt;
	    print “valore: “ + a[chiave]''&lt;br /&gt;
&lt;br /&gt;
'''DOPO I DUE PUNTI METTO SEMPRE IL TAB.'''&lt;br /&gt;
&lt;br /&gt;
== '''xrange''' ==&lt;br /&gt;
&lt;br /&gt;
xrange è un iterable di dieci elementi con il primo valore uguale a 0 .E' una lista ma non ha le proprietà di una lista.&lt;br /&gt;
se io voglio fare un for da uno a dieci (cioè la somma da uno a 10)&lt;br /&gt;
&lt;br /&gt;
es:     ''for I xrange(10)&lt;br /&gt;
               print I''&lt;br /&gt;
lui stampa&lt;br /&gt;
''1&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
4&lt;br /&gt;
5&lt;br /&gt;
6&lt;br /&gt;
7&lt;br /&gt;
8&lt;br /&gt;
9&lt;br /&gt;
10''&lt;br /&gt;
&lt;br /&gt;
== '''range''' ==&lt;br /&gt;
&lt;br /&gt;
è una lista.se io scrivo:&lt;br /&gt;
    ''print range(10)''&lt;br /&gt;
lui mi da     ''[0,1,2,3,4,5,6,7,8,9].''&lt;br /&gt;
è più lento di xrange e poi sta morendo&lt;br /&gt;
&lt;br /&gt;
== '''len''' ==&lt;br /&gt;
&lt;br /&gt;
    ''len (a)''&lt;br /&gt;
da la lunghezza della stringa&lt;br /&gt;
&lt;br /&gt;
== '''enumerate''' ==&lt;br /&gt;
&lt;br /&gt;
se io ho una lista di tre elmenti&lt;br /&gt;
''a=[“ciao”,”bel”, “mondo”]''&lt;br /&gt;
&lt;br /&gt;
''for I, elem in enumerate(a):&lt;br /&gt;
     print str(I) + “:” + elem&lt;br /&gt;
''&lt;br /&gt;
da la posizione corrente di ogni elemento.&lt;br /&gt;
''0:ciao&lt;br /&gt;
1:bel&lt;br /&gt;
2:mondo''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''raw_input''' ==&lt;br /&gt;
&lt;br /&gt;
dai il valore.&lt;br /&gt;
''Base= raw_input (“inserisce la base:”)&lt;br /&gt;
esponente=raw_input (“inserisci l'/ esponente”)''&lt;br /&gt;
&lt;br /&gt;
ti chiede il valore di base ed esponente.&lt;br /&gt;
&lt;br /&gt;
== '''Int''' ==&lt;br /&gt;
&lt;br /&gt;
forza il fatto che quel valore sia un intero.&lt;br /&gt;
''&lt;br /&gt;
Es:base=int(base)&lt;br /&gt;
  result=int(result)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''UPPER,LOWER,CAPITALIZE''' ==&lt;br /&gt;
&lt;br /&gt;
'''capitalize''' è un comando che sulla la stringa su cui viene applicato ,prende la prima lettera dopo gli spazi e ci mette la maiuscola&lt;br /&gt;
&lt;br /&gt;
es: &lt;br /&gt;
    ''print “ciao mondo”.capitalize()''&lt;br /&gt;
    ''Ciao mondo''&lt;br /&gt;
es: &lt;br /&gt;
    ''print “ciao mondo”.title()&lt;br /&gt;
    Ciao Mondo''&lt;br /&gt;
&lt;br /&gt;
'''LOWER:''' prende la striga e emette tutto minuscolo&lt;br /&gt;
'''UPPER:''' il contrario di lower&lt;br /&gt;
&lt;br /&gt;
== '''ESEMPIO DELLA SERATA:''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calcolo di una potenza.&lt;br /&gt;
&lt;br /&gt;
    ''&lt;br /&gt;
    base= raw_input (“inserisce la base:”)&lt;br /&gt;
    esponente=raw_input ('inserisci l\' esponente')&lt;br /&gt;
&lt;br /&gt;
    base=int(base)&lt;br /&gt;
    result=int(result)&lt;br /&gt;
&lt;br /&gt;
    result=1&lt;br /&gt;
    for i in xrange(esponente):&lt;br /&gt;
         result = result * base&lt;br /&gt;
    print result''&lt;br /&gt;
&lt;br /&gt;
il [http://docs.python.org/lib/built-in-funcs.html built-in] int() è necessario, dato che tutto quello che proviene dalla tastiera viene acquisito da raw_input() come stringa. Dato che dobbiamo usarli come interi, occorre effettuare un cast, ovvero&lt;br /&gt;
una trasformazione di tipo, da stringa a intero.&lt;br /&gt;
E' interessante notare che int() non cerca di fare i miracoli: provate a vedere cosa succede se cercate di convertire &amp;quot;awlerorj&amp;quot; in int!&lt;/div&gt;</summary>
		<author><name>NeXtreme</name></author>
	</entry>
</feed>