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]: