Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "rai/Prove1"
Differenze tra le versioni 1 e 2
Versione 1 del 08/01/2023 21.51.06
Dimensione: 237
Autore: rai
Commento:
Versione 2 del 08/01/2023 21.54.18
Dimensione: 14468
Autore: rai
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 5: Linea 5:
<<Indice(depth=2)>> <<Indice(depth=1)>>
<<Informazioni(forum="https://forum.ubuntu-it.org/viewtopic.php?f=46&t=638200"; rilasci="18.04" "20.04""22.04")>>
Linea 9: Linea 10:
Inserire una descrizione per questa nuova pagina rai/Prove1. In questa pagina vengono mostrati alcuni programmi scritti in python a difficoltà crescente. Non è una guida esauriente a tutte le funzionalità del linguaggio. Se si desidera approfondire le proprie conoscenze, consultare la sezione [[#risorse|Risorse]].

Alcune note:

 * tutto ciò che viene scritto preceduto dal carattere # è considerato dall'interprete come un commento.
 * questi listati sono scritti per l'interprete Python 3.7 per la guida nella vecchia versione Python 2.7, vedi [[Programmazione/Python/Listati]]
= Listato 1 =
<<BR>>

<<Anchor(areatriangolo1)>>
{{{#!python
#!/usr/bin/python3
import sys
import string
import math
''' questa è un'area di commento che uso per indicare cosa fa il programma o sorgente o script.
    Il programma principale o il main, calcola l'area di un triangolo qualsiasi noti i suoi tre
    lati usando la formula di Erone.
    Formula sqrt p*(p-a)*(p-b)*(p-c) sqrt = radice quadrata, p = (a+b+c)/2 a,b,c lati
    Salvatelo sul disco con il nome che vi propongo AreaTriangolo.py o come più vi piace
'''
a = int(input('inserisci il primo lato '))
print('primo lato = ', a)
b = int(input('inserisci il secondo lato '))
print('secondo lato = ', b)
c = int(input('inserisci il terzo lato '))
print('terzo lato = ',c)
print("\n");
print(" ora calcolo l'area di questo triangolo")
print("\n")
p = ((a+b+c))/2
s = math.sqrt(p*(p-a)*(p-b)*(p-c))

print("l'area del triangolo è " , s)
}}} ''Listato del programma Area``Triangolo.py''
<<BR>>

= Listato 2 =
<<BR>>

Il programma precedente termina se durante l'inserimento dei dati, per errore, viene digitato un carattere non numerico. È necessario quindi inserire un controllo sul dato immesso. A questo scopo è stato preparato questo altro programmino che salviamo col nome `AreaTriangolo2.py`:
<<Anchor(areatriangolo2)>>
{{{#!python
#!/usr/bin/python3
import sys
import math
import string
i = 0
l=[]
while True:
        a = input('inserisci il '+str(i+1)+' lato ')
        for j in range(len(a)) :
                errato = 'F'
                if a[j] in string.digits:
                        errato = 'F'
                        continue #continua il ciclo for
                else:
                        errato = 'T'
                        print("hai digitato qualcosa che non è un numero. Riprova")
                        break # termina il ciclo for
        if errato =='T':
                continue #continua il ciclo while
                        
        i +=1
        l.append(float(a)) # completata la verifica che il dato inserito sia una cifra, viene trasformato
                           # in un numero a virgola mobile e inserito in un array
        if errato =='F'and i <3:
                # questo controllo ci serve per riprendere l'inserimento dei dati dopo aver completato il controllo
                # sul dato precedente
                continue # continua il ciclo while per passare al successivo input
        elif errato =='F' and i >=3:
                print("\n")
                print('primo lato = ',l[0])
                print("\n")
                print('secondo lato = ',l[1])
                print("\n")
                print('terzo lato = ',l[2])
                print("\n")
                p = (l[0]+l[1]+l[2])/2.0 # calcola il semi perimetro
                if p > l[0] and p>l[1] and p >l[2]:
                        print("ora calcolo l'area di questo triangolo")
                        break # esce dal ciclo while per fine input
                else:
                        print("questi dati non possono rappresentare i lati di un triangolo. Riprova")
                        i =0
                        l=[]
                        continue # continua nel ciclo while per ricominciare i nuovi input
        
        
                
        

print("\n")

s = math.sqrt(p*(p-l[0])*(p-l[1])*(p-l[2]))

print("l'area del triangolo è " , s)
print("\n")
print("Fine programma ")
}}} ''Listato del programma Area``Triangolo2.py''
<<BR>>

== Listato 2 con eccezioni ==
<<BR>>

Mostriamo anche un'alternativa che utilizza le classi e la gestione delle eccezioni modificando il programma precedente `AreaTriangolo2.py`:
{{{#!python
#!/usr/bin/python3

# Importiamo la funzione sqrt (radice quadrata) dal modulo math
from math import sqrt

# Definiamo una classe Triangolo con tre metodi:
# un costruttore, un metodo che calcola il perimetro e uno che calcola l'area del triangolo.
class Triangolo:

      # Attributi della classe (le misure dei tre lati)
      a, b, c = 0, 0, 0

      # Metodo costruttore
      def __init__(self,a,b,c):
         # Controlliamo se i tre valori dati possono effettivamente essere le misure dei lati di un triangolo.
         # Caso contrario solleviamo una bella eccezione!
         if ((a+b>c) and (a+c>b) and (b+c>a)):
            self.a=a
            self.b=b
            self.c=c
         else:
            # stabiliamo che l'errore e' di tipo ValueError, cioe' il tipo di dato e' corretto(numeri in
            # virgola mobile) ma i valori sono sballati.ValueError è un errore definito da Python, ma
            # volendo potremmo crearci un errore personalizzato, ad esempio TriangoloInesistente
            raise ValueError("\nUn triangolo con queste misure non esiste. Riprova.")

      # Metodo che calcola il perimetro
      def perimetro(self):
         return self.a + self.b + self.c

      # Metodo che calcola l'area (tramite formula di Erone)
      def area(self):
         p=self.perimetro()/2.0
         return sqrt(p*(p-self.a)*(p-self.b)*(p-self.c))


while True:
      # Chiediamo all'utente di immettere le misure dei lati
      print("\nInserire le misure dei lati:")
      lati=[]
      for lato in ['a','b','c']:
          while True:
               l = input("\tMisura del lato "+lato+": ")
               try :
                  l = float(l)
               # se l'utente inserisce un valore che non puo' essere trasformato in un numero,
               # ad esempio una lettera, python sollevera' l'eccezione ValueError, e noi
               # prontamente la gestiamo
               except ValueError:
                  print("\nDevi inserire valori numerici. Riprova.\n")
               #se invece non e' stata sollevata nessuna eccezione, possiamo salvare il
               #valore del lato
               else:
                  lati.append(l)
                  break

      try:
         # Creiamo una nuova istanza della classe Triangolo.
         # In pratica facciamo una chiamata al suo metodo costruttore.
         # Sarebbe stato lo stesso scrivere "triangolo=Triangolo.__init__(a,b,c)"
         triangolo=Triangolo(lati[0],lati[1], lati[2])
      #qua gestiamo l'eccezione che noi stessi potremmo aver sollevato nella classe Triangolo
      except ValueError(e):
         #"e" e' l'oggetto creato da python durante il verificarsi dell'errore
         print(e.message)
         continue
      # Utilizziamo i metodi definiti in precedenza per ottenere perimetro ed area dell'oggetto triangolo,
      # e stampiamo a video i risultati.
      print("")
      print("Perimetro = ", triangolo.perimetro())
      print("Area = ", triangolo.area())

      # Chiediamo all'utente se intende terminare il programma.
      exit = input("\nUscire [digitare 's' per confermare]? ")
      print("")
      if exit == "s": break
}}} ''Listato del programma Area``Triangolo2.py con eccezioni''
<<BR>>

= Listato 3 =
<<BR>>

Ora supponiamo di dover calcolare l'area di un appezzamento di terreno di svariati ettari scomposto in un numero finito di triangoli.<<BR>>
Una volta nota l'area, supponiamo che debba essere divisa, per volontà testamentaria, in tre parti in funzione dell'età di tre fratelli i cui nomi sono Angelo, Alberto, Amilcare o come volete voi.

Useremo lo stesso programma [[#areatriangolo2|AreaTriangolo2.py]], con qualche modifica o aggiunta, che chiameremo `AreaTriangolo3.py`:
{{{#!python
#!/usr/bin/python3
import sys
import math
import string
# fase di input
nomi = []
eta = []
lati = []
x = 1
while x <= 3:
        a = input('Inserici nome '+str(x)+' fratello ')
        #verifichiamo l'input immesso
        errore = 'F'
        for i in range(len(a)):
                if a[i] in string.ascii_letters:
                        continue # continua il ciclo for
                else:
                        if i <= len(a):
                                print("errore nell'immettere il nome. Riprova")
                                errore = 'T'
                                break # esce dal ciclo for
        if errore == "T":
                continue # continua il ciclo while costringendo a reinserire il dato immesso prima in maniera errata
        else:
                # lo rendiamo tutto maiuscolo indipendentemente se lo sia o meno
                nomi.append(str.upper(a))
                print(nomi)
                x +=1 # questo incremento ci serve per poter distinguere nella immissione a quale persona assegnare il nome
                
#ora prendiamo in input le loro eta
x = 0

while x < 3:
        
        a = input("inserisci l'eta di "+nomi[x]+' ')
        for j in range(len(a)) :
                errato = 'F'
                if a[j] in string.digits:
                        errato = 'F'
                        continue #continua il ciclo for
                else:
                        errato = 'T'
                        print("hai digitato qualcosa che non è un numero. Riprova")
                        break # termina il ciclo for
        if errato =='T':
                continue #continua il ciclo while
                        
        x +=1
        eta.append(int(a))
        if errato =='F'and x <3:
                
                continue # continua il ciclo while per passare al successivo input
        elif errato =='F' and x >=3:
                print(' Eta di' +nomi[0] +" "+ str( int(eta[0])))
                print()
                print(' Eta di' +nomi[1] +" "+ str( int(eta[1])))
                print()
                print(' Eta di' +nomi[2] +" "+ str( int(eta[2])))
                print()
                break
#input dei dati per il calcolo dell'area dell'appezzamento
                
i = 0
l=[]
tria = []
while True:
        a = input('inserisci il '+str(i+1)+' lato ')
        for j in range(len(a)) :
                errato = 'F'
                if a[j] in string.digits:
                        errato = 'F'
                        continue #continua il ciclo for
                else:
                        errato = 'T'
                        print("hai digitato qualcosa che non è un numero. Riprova")
                        break # termina il ciclo for
        if errato =='T':
                continue #continua il ciclo while
                        
        i +=1
        l.append(float(a))
        if errato =='F'and i <3:
                # questo controllo verifica se abbiamo terminato i dati in input relativi ad un triangolo
                continue # continua il ciclo while per passare al successivo input
        elif errato =='F' and i >=3:
                # qui avendo termianto l'input dei dati relativi ad un trinagolo li ripresenta a video per maggior chiarezza
                print(' primo lato = ',l[0])
                print()
                print(' secondo lato = ',l[1])
                print()
                print(' terzo lato = ',l[2])
                print()
                p = (l[0]+l[1]+l[2])/2.0
                if p > l[0] and p>l[1] and p >l[2]:
                        print(" l'area di questo triangolo e' calcolabile")
                        tria.append(l)
                        l=[]
                        si = input(" hai finito di immettere i lati dei triangoli ? conferma con S/s ")
                        if si == "S" or si =='s':
                                print("Inizia la fase di calcolo ")
                                break # esce dal ciclo while per fine input
                        else:
                                i =0
                                l=[]
                                continue # continua nel ciclo while per input dati nuovo triangolo
                else:
                        print("questi dati non rappresentano i lati di un triangolo. Riprova ")
                        i =0
                        l=[]
                        continue # continua nel ciclo while perche i dati in input del triangolo erano errati
        
        
#fase di calcolo area appezzamento
n = len(tria) # il calcolo dell'area verrà ripetuto n volte una per ogni triangolo

p = 0
stot = 0
for i,l in enumerate(tria):
        for j in range( len(l)):
                print(l[j])
                p = p+l[j]
        print("semiper. nel "+str(i+1)+ " triangolo = "+ str(p/2.0))
        print()
        p=p/2.0
        s = math.sqrt(p*(p-l[0])*(p-l[1])*(p-l[2]))
        print("area "+str(i+1)+ " triangolo = "+ str(s))
        print()
        stot = stot +s
        p=0
print()
print("l'area totale dell'appezamento di terreno e di mq " + str(stot))
print()
print("ora calcoliamo quanto terreno spetta a ciascuno dei tre fratelli")

seta = 0
for i in eta:
        seta=seta+i
        
        
areau =(stot/seta)

for i in eta:
        a =areau*i
        nomi.append(a)
for i in range(0,3):
        print("l'area spettante a " +nomi[i] + " somma mq. "+ str(nomi[i+3]))
        print()
        
print(' Fine programma ')

}}} ''Listato del programma Area``Triangolo3.py''
<<BR>><<BR>>

<<Anchor(risorse)>>

= Ulteriori risorse =

 * È possibile anche utilizzare delle interfacce grafiche, per informazioni consultare la [[Programmazione/Python/InterfacceGrafiche|relativa guida]].


----
CategoryProgrammazione


Attenzione! Questa è una Pagina di prova. Le informazioni riportate potrebbero essere incomplete, errate e potenzialmente pericolose. Per contribuire alla realizzazione di questa pagina consultare la discussione di riferimento.

Errore nella macro informazioni:
Il rilascio 18.04" non esiste!

Introduzione

In questa pagina vengono mostrati alcuni programmi scritti in python a difficoltà crescente. Non è una guida esauriente a tutte le funzionalità del linguaggio. Se si desidera approfondire le proprie conoscenze, consultare la sezione Risorse.

Alcune note:

  • tutto ciò che viene scritto preceduto dal carattere # è considerato dall'interprete come un commento.
  • questi listati sono scritti per l'interprete Python 3.7 per la guida nella vecchia versione Python 2.7, vedi Programmazione/Python/Listati

Listato 1


   1 #!/usr/bin/python3
   2 import sys
   3 import string
   4 import math
   5 ''' questa è un'area di commento che uso per indicare cosa fa il programma o sorgente o script.
   6     Il programma principale o il main, calcola l'area di un triangolo qualsiasi noti i suoi tre 
   7     lati usando la formula di Erone.
   8     Formula  sqrt p*(p-a)*(p-b)*(p-c)    sqrt = radice quadrata, p = (a+b+c)/2   a,b,c lati
   9     Salvatelo sul disco con il nome che vi propongo AreaTriangolo.py o come più vi piace
  10 '''
  11 a = int(input('inserisci il primo lato  '))
  12 print('primo lato = ', a)
  13 b = int(input('inserisci il secondo lato  '))
  14 print('secondo lato = ', b)
  15 c = int(input('inserisci il terzo lato  '))
  16 print('terzo lato = ',c)
  17 print("\n");
  18 print(" ora calcolo l'area di questo triangolo")
  19 print("\n")
  20 p = ((a+b+c))/2
  21 s = math.sqrt(p*(p-a)*(p-b)*(p-c))
  22 
  23 print("l'area  del triangolo è " , s)

Listato del programma AreaTriangolo.py

Listato 2


Il programma precedente termina se durante l'inserimento dei dati, per errore, viene digitato un carattere non numerico. È necessario quindi inserire un controllo sul dato immesso. A questo scopo è stato preparato questo altro programmino che salviamo col nome AreaTriangolo2.py:

   1 #!/usr/bin/python3
   2 import sys
   3 import math
   4 import string
   5 i = 0
   6 l=[]
   7 while True:
   8         a = input('inserisci il '+str(i+1)+'  lato  ')
   9         for j in range(len(a)) :
  10                 errato = 'F'
  11                 if a[j] in string.digits:
  12                         errato = 'F'
  13                         continue #continua il ciclo for
  14                 else:
  15                         errato = 'T'
  16                         print("hai digitato qualcosa che non è un numero. Riprova")
  17                         break  # termina il ciclo for 
  18         if errato =='T':
  19                 continue  #continua il ciclo while
  20                         
  21         i +=1
  22         l.append(float(a)) # completata la verifica che il dato inserito sia una cifra, viene trasformato
  23                            # in un numero a virgola mobile e inserito in un array               
  24         if errato =='F'and i <3:
  25                 # questo controllo ci serve per riprendere l'inserimento dei dati dopo aver completato il controllo
  26                 # sul dato precedente
  27                 continue # continua il ciclo while per passare al successivo input
  28         elif errato =='F' and i >=3:
  29                 print("\n")
  30                 print('primo lato   = ',l[0])
  31                 print("\n")
  32                 print('secondo lato = ',l[1])
  33                 print("\n")     
  34                 print('terzo lato   = ',l[2])
  35                 print("\n")
  36                 p = (l[0]+l[1]+l[2])/2.0 # calcola il semi perimetro
  37                 if  p > l[0]  and  p>l[1] and p >l[2]:
  38                         print("ora calcolo l'area di questo triangolo")
  39                         break # esce dal ciclo while per fine input
  40                 else:
  41                         print("questi dati non possono rappresentare i lati di un triangolo. Riprova")
  42                         i =0
  43                         l=[]
  44                         continue # continua nel ciclo while per ricominciare i nuovi input
  45         
  46         
  47                 
  48         
  49 
  50 print("\n")
  51 
  52 s = math.sqrt(p*(p-l[0])*(p-l[1])*(p-l[2]))
  53 
  54 print("l'area  del triangolo è " , s)
  55 print("\n")
  56 print("Fine programma ")

Listato del programma AreaTriangolo2.py

Listato 2 con eccezioni


Mostriamo anche un'alternativa che utilizza le classi e la gestione delle eccezioni modificando il programma precedente AreaTriangolo2.py:

   1 #!/usr/bin/python3
   2 
   3 # Importiamo la funzione sqrt (radice quadrata) dal modulo math
   4 from math import sqrt
   5 
   6 # Definiamo una classe Triangolo con tre metodi:
   7 # un costruttore, un metodo che calcola il perimetro e uno che calcola l'area del triangolo.
   8 class Triangolo:
   9 
  10       # Attributi della classe (le misure dei tre lati)
  11       a, b, c = 0, 0, 0
  12 
  13       # Metodo costruttore
  14       def __init__(self,a,b,c):
  15          # Controlliamo se i tre valori dati possono effettivamente essere le misure dei lati di un triangolo.
  16          # Caso contrario solleviamo una bella eccezione! 
  17          if ((a+b>c) and (a+c>b) and (b+c>a)):
  18             self.a=a
  19             self.b=b
  20             self.c=c
  21          else: 
  22             # stabiliamo che l'errore e' di tipo ValueError, cioe' il tipo di dato e' corretto(numeri in
  23             # virgola mobile) ma i valori sono sballati.ValueError è un errore definito da Python, ma 
  24             # volendo potremmo crearci un errore personalizzato, ad esempio TriangoloInesistente
  25             raise ValueError("\nUn triangolo con queste misure non esiste. Riprova.")
  26 
  27       # Metodo che calcola il perimetro
  28       def perimetro(self):
  29          return self.a + self.b + self.c
  30 
  31       # Metodo che calcola l'area (tramite formula di Erone)
  32       def area(self):
  33          p=self.perimetro()/2.0
  34          return sqrt(p*(p-self.a)*(p-self.b)*(p-self.c))
  35 
  36 
  37 while True:
  38       # Chiediamo all'utente di immettere le misure dei lati
  39       print("\nInserire le misure dei lati:")
  40       lati=[]
  41       for lato in ['a','b','c']:
  42           while True:
  43                l = input("\tMisura del lato "+lato+": ")
  44                try :
  45                   l = float(l)
  46                # se l'utente inserisce un valore che non puo' essere trasformato in un numero,
  47                # ad esempio una lettera, python sollevera' l'eccezione ValueError, e noi 
  48                # prontamente la gestiamo
  49                except ValueError:
  50                   print("\nDevi inserire valori numerici. Riprova.\n")
  51                #se invece non e' stata sollevata nessuna eccezione, possiamo salvare il 
  52                #valore del lato
  53                else:
  54                   lati.append(l)
  55                   break
  56 
  57       try:
  58          # Creiamo una nuova istanza della classe Triangolo.
  59          # In pratica facciamo una chiamata al suo metodo costruttore.
  60          # Sarebbe stato lo stesso scrivere "triangolo=Triangolo.__init__(a,b,c)"
  61          triangolo=Triangolo(lati[0],lati[1], lati[2])
  62       #qua gestiamo l'eccezione che noi stessi potremmo aver sollevato nella classe Triangolo
  63       except ValueError(e):
  64          #"e" e' l'oggetto creato da python durante il verificarsi dell'errore 
  65          print(e.message)
  66          continue
  67       # Utilizziamo i metodi definiti in precedenza per ottenere perimetro ed area dell'oggetto triangolo,
  68       # e stampiamo a video i risultati.
  69       print("")
  70       print("Perimetro = ", triangolo.perimetro())
  71       print("Area = ", triangolo.area())
  72 
  73       # Chiediamo all'utente se intende terminare il programma.
  74       exit = input("\nUscire [digitare 's' per confermare]? ")
  75       print("")
  76       if exit == "s": break

Listato del programma AreaTriangolo2.py con eccezioni

Listato 3


Ora supponiamo di dover calcolare l'area di un appezzamento di terreno di svariati ettari scomposto in un numero finito di triangoli.
Una volta nota l'area, supponiamo che debba essere divisa, per volontà testamentaria, in tre parti in funzione dell'età di tre fratelli i cui nomi sono Angelo, Alberto, Amilcare o come volete voi.

Useremo lo stesso programma AreaTriangolo2.py, con qualche modifica o aggiunta, che chiameremo AreaTriangolo3.py:

   1 #!/usr/bin/python3
   2 import sys
   3 import math
   4 import string
   5 # fase di input
   6 nomi = []
   7 eta = []
   8 lati = []
   9 x = 1
  10 while x <= 3:
  11         a = input('Inserici nome '+str(x)+'  fratello ')
  12         #verifichiamo l'input immesso
  13         errore = 'F'
  14         for i in range(len(a)):
  15                 if a[i] in string.ascii_letters:
  16                         continue # continua il ciclo for
  17                 else:
  18                         if i <= len(a):
  19                                 print("errore nell'immettere il  nome. Riprova")
  20                                 errore = 'T'
  21                                 break # esce dal ciclo for
  22         if errore == "T":       
  23                 continue # continua il ciclo while costringendo a reinserire il dato immesso prima in maniera errata
  24         else:
  25                 # lo rendiamo tutto maiuscolo indipendentemente se lo sia  o meno
  26                 nomi.append(str.upper(a))
  27                 print(nomi)
  28                 x +=1   # questo incremento ci serve per poter distinguere nella immissione a quale persona assegnare il nome
  29                 
  30 #ora prendiamo in input le loro eta     
  31 x = 0
  32 
  33 while  x < 3:
  34         
  35         a = input("inserisci l'eta di  "+nomi[x]+'  ')
  36         for j in range(len(a)) :
  37                 errato = 'F'
  38                 if a[j] in string.digits:
  39                         errato = 'F'
  40                         continue #continua il ciclo for
  41                 else:
  42                         errato = 'T'
  43                         print("hai digitato qualcosa che non è un numero. Riprova")
  44                         break  # termina il ciclo for 
  45         if errato =='T':
  46                 continue  #continua il ciclo while
  47                         
  48         x +=1
  49         eta.append(int(a))              
  50         if errato =='F'and x <3:
  51                 
  52                 continue # continua il ciclo while per passare al successivo input
  53         elif errato =='F' and x  >=3:
  54                 print(' Eta di' +nomi[0] +" "+ str( int(eta[0])))
  55                 print()
  56                 print(' Eta di' +nomi[1] +" "+ str( int(eta[1])))
  57                 print()   
  58                 print(' Eta di' +nomi[2] +" "+ str( int(eta[2])))
  59                 print()
  60                 break
  61 #input dei dati per il calcolo dell'area dell'appezzamento
  62                 
  63 i = 0
  64 l=[]
  65 tria = []
  66 while True:
  67         a = input('inserisci il '+str(i+1)+'  lato  ')
  68         for j in range(len(a)) :
  69                 errato = 'F'
  70                 if a[j] in string.digits:
  71                         errato = 'F'
  72                         continue #continua il ciclo for
  73                 else:
  74                         errato = 'T'
  75                         print("hai digitato qualcosa che non è un numero. Riprova")
  76                         break  # termina il ciclo for 
  77         if errato =='T':
  78                 continue  #continua il ciclo while
  79                         
  80         i +=1
  81         l.append(float(a))              
  82         if errato =='F'and i <3:
  83                 # questo controllo verifica se abbiamo terminato i dati in input relativi ad un triangolo
  84                 continue # continua il ciclo while per passare al successivo input
  85         elif errato =='F' and i >=3:
  86                 # qui avendo termianto l'input dei dati relativi ad un trinagolo li ripresenta a video per maggior chiarezza  
  87                 print(' primo lato   = ',l[0])
  88                 print()
  89                 print(' secondo lato = ',l[1])
  90                 print()   
  91                 print(' terzo lato   = ',l[2])
  92                 print()
  93                 p = (l[0]+l[1]+l[2])/2.0
  94                 if  p > l[0]  and  p>l[1] and p >l[2]:
  95                         print(" l'area di questo triangolo e' calcolabile")
  96                         tria.append(l)
  97                         l=[]
  98                         si = input(" hai finito di immettere i lati dei triangoli ?  conferma con S/s  ")
  99                         if si == "S" or si =='s':
 100                                 print("Inizia la fase di calcolo ")
 101                                 break # esce dal ciclo while per fine input
 102                         else:
 103                                 i =0
 104                                 l=[]
 105                                 continue # continua nel ciclo while per input dati nuovo triangolo
 106                 else:
 107                         print("questi dati non rappresentano i lati di un triangolo. Riprova ")
 108                         i =0
 109                         l=[]
 110                         continue # continua nel ciclo while perche i dati in input del triangolo erano errati
 111         
 112         
 113 #fase di calcolo area appezzamento
 114 n = len(tria) # il calcolo dell'area verrà ripetuto n volte una per ogni triangolo
 115 
 116 p = 0
 117 stot = 0
 118 for i,l in enumerate(tria):
 119         for j in range( len(l)):
 120                 print(l[j])
 121                 p = p+l[j]
 122         print("semiper. nel  "+str(i+1)+ " triangolo = "+ str(p/2.0))
 123         print()   
 124         p=p/2.0
 125         s = math.sqrt(p*(p-l[0])*(p-l[1])*(p-l[2]))
 126         print("area "+str(i+1)+ " triangolo = "+ str(s))
 127         print()
 128         stot = stot +s
 129         p=0
 130 print()   
 131 print("l'area totale dell'appezamento di terreno e di mq " + str(stot))  
 132 print()
 133 print("ora calcoliamo quanto terreno spetta a ciascuno dei tre fratelli")
 134 
 135 seta = 0
 136 for i in eta:
 137         seta=seta+i
 138         
 139         
 140 areau =(stot/seta)
 141 
 142 for i in eta:
 143         a =areau*i
 144         nomi.append(a)
 145 for i in range(0,3):
 146         print("l'area spettante a " +nomi[i] + " somma mq. "+ str(nomi[i+3]))    
 147         print()
 148         
 149 print(' Fine programma ')

Listato del programma AreaTriangolo3.py

Ulteriori risorse

  • È possibile anche utilizzare delle interfacce grafiche, per informazioni consultare la relativa guida.


CategoryProgrammazione


CategoryHomepage CategoryNuoviDocumenti