Python 3.8.6 | packaged by conda-forge | (default, Oct 7 2020, 19:08:05)

Type "copyright", "credits" or "license" for more information.


IPython 7.18.1 -- An enhanced Interactive Python.


In [1]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

[1, 2, 2, 1, 2, 2]


In [2]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

Traceback (most recent call last):


File "/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py", line 65, in <module>

print(istogramma_con_estremi_e_dati_interi(5, 10, [ 6, 8, 6, 5, 9, 10, 10, 7, 7, 9]))


File "/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py", line 35, in istogramma_con_estremi_e_dati_interi

return produci_istogramma(istogramma)


TypeError: produci_istogramma() missing 1 required positional argument: 'istogramma'



In [3]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

5 *

6 **

7 **

8 *

9 **

10 **



In [4]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

5 *

6 **

7 **

8 *

9 **

10 **



In [5]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

5 *

6 **

7 **

8

9 **

10 **



In [6]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

5 *

6 **

7 **

8

9 **

10 **



In [7]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

-17 ***

-16 ****

-15 *********

-14 ****

-13 **

-12 *******

-11 ****

-10 ***

-9 *

-8 *****

-7 ***

-6 ******

-5 ****

-4 *****

-3 **

-2 ****

-1 *****

0 ******

1 **

2 **

3 **

4 **

5 **

6 **

7 **

8 *****

9

10 ****



In [8]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

-17 ***

-16 ******

-15 ****

-14 ****

-13 **

-12 ***

-11 **

-10 *****

-9

-8 ***

-7 *****

-6 **

-5 ******

-4 ******

-3 ***

-2 ****

-1 **

0 *

1 *****

2 ***

3 *****

4 ****

5 ****

6 *****

7 **

8 ***

9 ****

10 ****



In [9]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

-17 **********************************

-16 **********************************

-15 ******************************************************

-14 ***********************************

-13 ************************************

-12 *****************************

-11 ************************************

-10 **************************************

-9 ******************************

-8 **********************************

-7 ******************************************

-6 ***************************************

-5 ***********************************

-4 *********************************

-3 ***************************************

-2 ****************************************

-1 ******************************

0 **********************************

1 ********************************************

2 ************************

3 **************************************

4 *******************************

5 ***************************************

6 **********************************

7 ***********************************

8 ******************************

9 ***********************************

10 **************************************



In [10]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

-17 **

-16 ********

-15 **

-14 **

-13 **

-12 *

-11 ****

-10 *****

-9 **

-8 *****

-7 ******

-6 ***

-5 *********

-4 **

-3 *

-2 *****

-1 **

0 ***

1 **

2 ****

3 ****

4 *****

5 *****

6 ****

7 **

8 *****

9 **

10 ***



In [11]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

-14 ****

10 ***

-17 **

-3 ****

-4 ****

-7 ****

6 ***

3 ****

2 **

-10 *******

1 ***

-6 *****

9 *

-13 *******

-9 ******

-1 ******

-5 ***

8 ****

-15 ******

4 ******

0 **

5 ******

7 **

-2 *

-16 *

-11 ***

-8 *



In [12]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

-17 *

-16 **

-15 **

-14 *******

-13 ******

-12 *****

-11 *****

-10 ***

-9 *****

-8 **

-7 ***

-6 ***

-5 *

-4 ****

-3 **

-2 **

-1 *****

0 ***

1 **

2 ******

3 *****

4 *****

5 ***

6 *

7 ****

8 *****

9 ****

10 ****



In [13]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

-17 ****

-16 *****

-15 ****

-14 *

-13 ****

-11 ****

-10 *

-9 ***

-8 **

-7 ******

-6 ******

-5 **

-4 **

-3 ***

-2 **

-1 *******

0 **********

1 ****

2 **

4 ****

5 ****

6 ***

7 ***

8 *****

9 ****

10 *****



In [14]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

Traceback (most recent call last):


File "/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py", line 154, in <module>

print(istogramma_con_diz_e_dati_int(valori))


File "/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py", line 140, in istogramma_con_diz_e_dati_int

return produci_istogramma_diz(istogramma)


NameError: name 'produci_istogramma_diz' is not defined



In [15]: runfile('/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20/lezione08-30-10-20.py', wdir='/home/andrea/Documents/Uni/Didattica/Prog1/2020-21/Lezioni/lezione08-30-10-20')

-17 ******

-15 *******

-14 ****

-13 ***

-12 **

-11 ****

-10 ***

-9 **

-8 ****

-7 ****

-6 ******

-5 ****

-4 *

-3 ****

-2 *****

-1 *

0 *****

1 ****

2 **

3 ***

4 ****

5 **

6 **

7 ********

8 *****

9 **

10 ***


-17 ******

-16

-15 *******

-14 ****

-13 ***

-12 **

-11 ****

-10 ***

-9 **

-8 ****

-7 ****

-6 ******

-5 ****

-4 *

-3 ****

-2 *****

-1 *

0 *****

1 ****

2 **

3 ***

4 ****

5 **

6 **

7 ********

8 *****

9 **

10 ***



In [16]: F = open('lezione08-30-10-20.py')


In [17]: type(F)

Out[17]: _io.TextIOWrapper


In [18]: F.read()

Out[18]: '#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n"""\nCreated on Fri Oct 30 11:14:22 2020\n\n@author: andrea\n"""\n\n\'\'\' \nistogramma di una serie di dati\n\nInput:\n - lista di dati numerici (interi/float?)\n - definizione degli intervalli (implicita/esplicita?)\nOutput:\n - stringa con più righe, \n una per ogni valore\n ciascuna riga contiene il valore, spazio e \n tanti asterischi quante volte quel valore appare nei dati\n (i valori con conteggio 0 devono apparire?)\n\n# per ottenere l\'istogramma conoscendo A,B e i dati\n # calcolo le frequenze dei dati \n # opzione uno: usiamo una lista se:\n # i valori sono interi\n # conosciamo l\'intervallo di valori possibili [A, B]\n # dalle frequenze produco la stringa\n\n\'\'\'\n\ndef istogramma_con_estremi_e_dati_interi(A, B, dati):\n # calcoliamo la lista dei conteggi\n istogramma = calcola_frequenze(A,B, dati)\n # produciamo la stringa\n return produci_istogramma(A, istogramma)\n\n# per produrre l\'istogramma da A a B con dati solo interi tra A e B\ndef calcola_frequenze(A, B, dati):\n # costruisco una lista di B-A+1 elementi = 0\n istogramma = [0] * (B-A+1)\n # per ogni valore X dei dati\n for X in dati:\n # l\'indice corretto è I=X-A\n # incrementiamo l\'elemento nella posizione I\n istogramma[X-A] += 1\n # torno la lista\n return istogramma\n\n# per produrre la string dell\'istogramma\ndef produci_istogramma(A, istogramma):\n # inizializziamo il risultato con \'\'\n risultato = \'\'\n # per ogni indice X della lista\n for X, N in enumerate(istogramma):\n # il valore originale nei dati è A+X\n valore = X+A\n # la frequenza N di quel dato è nella posizione della lista\n # aggiungo al risultato la stringa\n # {valore} N asterischi \n risultato += str(valore) + \'\\t\' + (\'*\' * N) + \'\\n\'\n # torno il risultato\n return risultato\n\n\ndef istogramma_con_estremi_e_dati_float(A, B, dati):\n # calcoliamo la lista dei conteggi\n istogramma = calcola_frequenze_float(A,B, dati)\n # produciamo la stringa\n return produci_istogramma(A, istogramma)\n\n# per produrre l\'istogramma da A a B con dati anche float tra A e B\ndef calcola_frequenze_float(A, B, dati):\n # costruisco una lista di B-A+1 elementi = 0\n istogramma = [0] * (B-A+1)\n # per ogni valore X dei dati\n for X in dati:\n # trasformo il dato X in intero\n X = int(X)\n # l\'indice corretto è I=X-A\n # incrementiamo l\'elemento nella posizione I\n istogramma[X-A] += 1\n # torno la lista\n return istogramma\n\n# per calcolare l\'istogramma dei dati con un dizionario\ndef calcola_frequenze_con_diz_int(dati):\n # inizializzo il dizionario a {}\n istogramma = {}\n # key = valore visto nei dati\n # value = frequenza di apparizione del dato\n # per ogni dato X\n for X in dati:\n # calcolo la chiave\n # se la chiave non appare nel dizionario\n if X not in istogramma:\n # gli associo il valore 1\n istogramma[X] = 1\n # altrimenti\n else:\n # aggiungo 1 al valore corrente\n istogramma[X] += 1\n # ritorno il dizionario\n return istogramma\n\n# per produrre la stringa da un istogramma dizionario\ndef produci_istogramma_diz_con_buchi(istogramma):\n # inizializzo il risultato come \'\'\n risultato = \'\'\n # per ogni coppia chiave:valore dell\'istogramma\n for valore, frequenza in sorted(istogramma.items()):\n # aggiungo la riga chiave\\ttanti asterischi\\n\n risultato += str(valore) + \'\\t\' + \'*\'*frequenza + \'\\n\'\n # ritorno la stringa\n return risultato\n\n# per produrre la stringa da un istogramma dizionario\ndef produci_istogramma_diz_senza_buchi(istogramma):\n # inizializzo il risultato come \'\'\n risultato = \'\'\n # cerco minimo e massimo delle chiavi\n minimo = min(istogramma.keys())\n massimo = max(istogramma.keys())\n # genero tutti valori tra minimo e massimo\n # per ciascun valore tra minimo e massimo\n for valore in range(minimo, massimo+1):\n # aggiungo la riga chiave\\ttanti asterischi\\n\n if valore in istogramma:\n frequenza = istogramma[valore]\n else:\n frequenza = 0\n risultato += str(valore) + \'\\t\' + \'*\'*frequenza + \'\\n\'\n # ritorno la stringa\n return risultato\n\n\ndef istogramma_con_diz_e_dati_int(dati):\n # calcoliamo la lista dei conteggi\n istogramma = calcola_frequenze_con_diz_int(dati)\n # produciamo la stringa\n return produci_istogramma_diz_con_buchi(istogramma)\n\ndef istogramma_con_diz_e_dati_int_nh(dati):\n # calcoliamo la lista dei conteggi\n istogramma = calcola_frequenze_con_diz_int(dati)\n # produciamo la stringa\n return produci_istogramma_diz_senza_buchi(istogramma)\n\n\nif __name__ == \'__main__\':\n #print(istogramma_con_estremi_e_dati_float(5, 10, [ 6.3, 6.56, 5.1, 9.44, 10.0, 10.99, 7.1, 7.999999, 9.2]))\n import random\n valori = random.choices(range(-17, 11), k=100)\n #print(istogramma_con_estremi_e_dati_interi(-17, 10, valori))\n print(istogramma_con_diz_e_dati_int(valori))\n print(istogramma_con_diz_e_dati_int_nh(valori))\n \n\n'


In [19]: print(F.read())



In [20]: