Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-10-2008, 12:15   #1
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
[Python] - Esercizio da principiante

Esercizio: scrivi una funzione chiamata Istogramma che prende una lista ed il numero di intervalli da considerare e ritorna l'istogramma della distribuzione dei valori per ciascun intervallo.

Codice:
def istogramma(Lista,N_INT):
    L_INT = [0] * N_INT
    for i in Lista:
         Indice = int(i * N_INT)
         L_INT[Indice] = L_INT[Indice] + 1 
    print L_INT

Io l'esercizio l'ho risolto così sta di fatto che non appena faccio partire la funzione mi da un'errore del genere:
Codice:
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    istogramma()
  File "C:\Documents and Settings\MICHELE\Desktop\Copia di Intervall_V2.py", line 7, in istogramma
    L_INT[Indice] = L_INT[Indice] + 1
IndexError: list index out of range
__________________
------------------------------------------------------------------------------------------------------------
Intel Core 2 Duo 2.66Ghz - 3gb Ram - Hard Disk 250gb - Scheda Video: GeForce 8500 Gt da 512mb - Windows Xp Pro SP3
IPHONE 3GS 16GB BLACK
MACBOOK PRO 15,4" 2.40GHz - 4GB RAM 320GB HD
------------------------------------------------------------------------------------------------------------
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2008, 13:28   #2
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16211
Quote:
Originariamente inviato da 88MIKI88 Guarda i messaggi
Codice:
    for i in Lista:
         Indice = int(i * N_INT)
         L_INT[Indice] = L_INT[Indice] + 1
Lista può essere una lista di qualsiasi cosa, quindi non sai bene quale valore assumerà int(i * N_INT).
Più semplicemente, puoi dire al programma di leggere da Lista tanti elementi quanto è lunga Lista:
Codice:
    for i in range(len(Lista)):
         Indice = Lista[i]
EDIT: ah, no, aspetta, i valori sono in intervalli... aspetta che ci penso...
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu

Ultima modifica di Ziosilvio : 25-10-2008 alle 13:30.
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2008, 14:06   #3
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16211
Allora, la cosa è in generale abbastanza complicata.

Se gli intervalli sono equispaziati, allora hai un insieme di valori compresi tra a incluso e b=a+N*h incluso, dove h è l'ampiezza dell'intervallo.
Devi quindi trasformare l'intervallo [a,b) nell'intervallo [0,N) preservando l'ordine, e questo lo puoi fare mandando il valore x che leggi dalla lista, nel valore y = (x-a)/h.
Allora i è la parte intera di y (il massimo intero che non supera y), ossia int(y).

Se gli intervalli non sono equispaziati, allora devi trovare l'intervallo "buono" mediante una serie di confronti.
Dovrebbe essere possibile farlo tramite una variante dell'algoritmo di ricerca binaria, che però adesso non ho voglia di cercare.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2008, 23:43   #4
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
Io l'esercizio l'ho risolto così sta di fatto che non appena faccio partire la funzione mi da un'errore del genere:
Codice:
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    istogramma()
  File "C:\Documents and Settings\MICHELE\Desktop\Copia di Intervall_V2.py", line 7, in istogramma
    L_INT[Indice] = L_INT[Indice] + 1
IndexError: list index out of range
[/quote]

L'errore l'ho capito ho provato a creare una lista di nr. random e non da errore.....
L'errore si crea ogni volta che usiamo numeri superiori allo 0.99 in quanto l'indice che viene generato esce dalla lista
__________________
------------------------------------------------------------------------------------------------------------
Intel Core 2 Duo 2.66Ghz - 3gb Ram - Hard Disk 250gb - Scheda Video: GeForce 8500 Gt da 512mb - Windows Xp Pro SP3
IPHONE 3GS 16GB BLACK
MACBOOK PRO 15,4" 2.40GHz - 4GB RAM 320GB HD
------------------------------------------------------------------------------------------------------------
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2008, 13:01   #5
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
Un input per procedere??
__________________
------------------------------------------------------------------------------------------------------------
Intel Core 2 Duo 2.66Ghz - 3gb Ram - Hard Disk 250gb - Scheda Video: GeForce 8500 Gt da 512mb - Windows Xp Pro SP3
IPHONE 3GS 16GB BLACK
MACBOOK PRO 15,4" 2.40GHz - 4GB RAM 320GB HD
------------------------------------------------------------------------------------------------------------
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 14:48   #6
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16211
Quote:
Originariamente inviato da 88MIKI88 Guarda i messaggi
L'errore si crea ogni volta che usiamo numeri superiori allo 0.99 in quanto l'indice che viene generato esce dalla lista
Allora bisogna sicuramente imporre un controllo per assicurarsi che l'indice calcolato sia sensato.
Dopodiché le cose da fare possono essere tante, a me viene in mente di creare la lista con un elemento in più dove segnare le istanze che causano un indice troppo grande.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 21:04   #7
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da 88MIKI88 Guarda i messaggi
Io l'esercizio l'ho risolto così sta di fatto che non appena faccio partire la funzione mi da un'errore del genere:
Codice:
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    istogramma()
  File "C:\Documents and Settings\MICHELE\Desktop\Copia di Intervall_V2.py", line 7, in istogramma
    L_INT[Indice] = L_INT[Indice] + 1
IndexError: list index out of range
L'errore l'ho capito ho provato a creare una lista di nr. random e non da errore.....
L'errore si crea ogni volta che usiamo numeri superiori allo 0.99 in quanto l'indice che viene generato esce dalla lista[/quote]

Posta la lista di numeri random. Ogni volta che usi numeri superiori allo 0.99 dove?

Comunque per essere un libro per principianti questo capitolo è abbastanza complesso, soprattutto per uno come me che la matematica nemmeno la toccava al liceo
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 22:11   #8
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
L'errore l'ho capito ho provato a creare una lista di nr. random e non da errore.....
L'errore si crea ogni volta che usiamo numeri superiori allo 0.99 in quanto l'indice che viene generato esce dalla lista
Quote:
Posta la lista di numeri random. Ogni volta che usi numeri superiori allo 0.99 dove?

Comunque per essere un libro per principianti questo capitolo è abbastanza complesso, soprattutto per uno come me che la matematica nemmeno la toccava al liceo
Prendi il programma che genera numeri casuali e tira fuori una lista di numeri.....se tu prendi valori dall'1 in su viene dato errore
__________________
------------------------------------------------------------------------------------------------------------
Intel Core 2 Duo 2.66Ghz - 3gb Ram - Hard Disk 250gb - Scheda Video: GeForce 8500 Gt da 512mb - Windows Xp Pro SP3
IPHONE 3GS 16GB BLACK
MACBOOK PRO 15,4" 2.40GHz - 4GB RAM 320GB HD
------------------------------------------------------------------------------------------------------------
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 23:56   #9
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da 88MIKI88 Guarda i messaggi
Prendi il programma che genera numeri casuali e tira fuori una lista di numeri.....se tu prendi valori dall'1 in su viene dato errore
In che senso se prendi valori dall'1 in su?

Il programma è questo:


Codice:
def ListaCasuale (Lungh):
    s = [0] * Lungh
    for i in range(Lungh):
        s[i] = random.random ()
    return s
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2008, 08:36   #10
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Il problema è dovuto a questo int(i * N_INT) ovviamente.

Ora il punto è che i è un elemento della lista, e se N_INT rappresenta il numero di elementi della lista, mi pare normale che se i >= 1.0 ti tenterà di accedere a un elemento fuori dalla lista.

Bisogna assicurarsi che i sia sempre < 1.0, e questo la funzione random.random lo garantisce.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2008, 08:52   #11
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Il problema è dovuto a questo int(i * N_INT) ovviamente.

Ora il punto è che i è un elemento della lista, e se N_INT rappresenta il numero di elementi della lista, mi pare normale che se i >= 1.0 ti tenterà di accedere a un elemento fuori dalla lista.

Bisogna assicurarsi che i sia sempre < 1.0, e questo la funzione random.random lo garantisce.
Ma perchè questo limite dell'1.0? Cioè, se io ho i e lo moltiplico ciclicamente ad 8 ad esempio, perchè dovrebbe accedere ad un elemento fuori dalla lista? Dove è imposto il limite di 1.0?
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2008, 10:39   #12
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Molto semplice. Supponiamo che tu abbia 8 elementi nella lista, e ci sia un elemento pari a 1.0.

int(1.0 * 8) = 8 quindi dovrei accedere all'elemento di indice 8. Ma in una lista gli elementi partono da 0, per cui gli indici variano sempre da 0 a 7. Se provi ad accedere a quello di indice 8 sollevi un'eccezione, appunto.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2008, 13:05   #13
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Molto semplice. Supponiamo che tu abbia 8 elementi nella lista, e ci sia un elemento pari a 1.0.

int(1.0 * 8) = 8 quindi dovrei accedere all'elemento di indice 8. Ma in una lista gli elementi partono da 0, per cui gli indici variano sempre da 0 a 7. Se provi ad accedere a quello di indice 8 sollevi un'eccezione, appunto.
A questo c'ero arrivato pure io, infatti l'ho pure scritto nell'altro topic mi sembra. Quello che non mi è chiaro è quell'i, cioè il valore di i attraversa tutta la lunghezza, per non fare uscire l'indice fuori dal limite allora i dovrebbe attraversare la lista di numeri casuali generata con random.random. O no?
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2008, 14:02   #14
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
"i" è semplicemente l'elemento della lista, per cui dipende strettamente da come è stato generato. Se con random.random, allora è garantito essere < 1.0, per cui problemi non dovrebbe darli (posto che N_INT sia effettivamente il numero di elementi della lista).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2008, 14:50   #15
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
"i" è semplicemente l'elemento della lista, per cui dipende strettamente da come è stato generato. Se con random.random, allora è garantito essere < 1.0, per cui problemi non dovrebbe darli (posto che N_INT sia effettivamente il numero di elementi della lista).
Bè se i attraversa la Lista si sa come è generato. Per generarlo con random.random si dovrebbe scrivere una cosa del tipo = i = random.random ()?

P.S: che significa posto che N_INT sia effettivamente il numero di elementi della lista? Se come valore metto 8 sono sicuro che gli elementi sono quelli. O sbaglio?
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2008, 21:50   #16
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Bè se i attraversa la Lista si sa come è generato.
"i" non attraversa la lista: è un suo elemento.
Quote:
Per generarlo con random.random si dovrebbe scrivere una cosa del tipo = i = random.random ()?
Per generare una lista di 8 numeri random io farei così:
Codice:
Lista = [random.random() for i in range(8)]
Quote:
P.S: che significa posto che N_INT sia effettivamente il numero di elementi della lista? Se come valore metto 8 sono sicuro che gli elementi sono quelli. O sbaglio?
Sei sicuro se e solo se hai generato una lista di 8 elementi.

Oppure se hai passato len(Lista) come N_INT.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 01:36   #17
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
"i" non attraversa la lista: è un suo elemento.

Per generare una lista di 8 numeri random io farei così:
Codice:
Lista = [random.random() for i in range(8)]
Sei sicuro se e solo se hai generato una lista di 8 elementi.

Oppure se hai passato len(Lista) come N_INT.
Si scusa, volevo dire che è un suo elemento che cambia ad ogni ciclo. Se genero una lista di 8 numeri casuali come hai scritto tu dovrei essere abbastanza sicuro non credi?
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 08:24   #18
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Certamente.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 08:43   #19
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Certamente.
Ok. Comunque anche se hai detto che posso andare avanti appena finisco l'altro esercizio dei numeri casuali provo a ragionare su questo codice dell'istogramma
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
MacBook Air M4 a un super prezzo su Amaz...
Dal 12 novembre stretta sui siti porno: ...
Recensione Synology DS725+: tornano i di...
Car of the Year 2026, rivelate le 7 fina...
Il mouse diventa indossabile: Prolo Ring...
Animal Crossing: New Horizons torna in v...
Task Manager impazzito su Windows 11: in...
NZXT: il PC in abbonamento finisce in tr...
Halo 2 e 3: remake in arrivo, multiplaye...
Robot Phone e un nuovo ecosistema AI: HO...
Amazon sorprende tutti: extra 15% di sco...
HONOR 400 Lite 5G a 209,90€: smartphone ...
Asus TUF Gaming F15 con RTX 4070 e i7-12...
OpenAI punta alla quotazione in Borsa: v...
Samsung Galaxy S25 Ultra a 1.099€ su Ama...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:04.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v