Grazie il tuo codice funziona,pero continuo a non capire l'errore, potresti provare a spiegarmi meglio? ciao e grazie.
Grazie il tuo codice funziona,pero continuo a non capire l'errore, potresti provare a spiegarmi meglio? ciao e grazie.
all'interno del tuo while, dopo aver fatto un for per eliminare i caratteri "non graditi", metti un altro for che fa un numero di cicli pari al numero di righe e fa l'append alla lista dei valori inseriti dall'utente
se il numero di righe è maggiore di uno, lo stesso dato è inserito n volte, con n uguale al numero di righe (nella correzione che ti ho postato ho scordato di scrivere che avevo eliminato questo ultimo for...)
Grazie mille per la tua disponibilità e del tuo tempo ora mi è chiaro.
Sai per caso come posso contare le occorrenze dei numeri nella matrice ? ho provato cosi
i=1
ripetizione=list()
for i in range(91):
ripetizione[1:i]=(int(matrice.count(i)))
print(matrice)
vorrei contare le occorrenze i nella matrice i numeri sono compresi tra 1-90.
ottengo l' errore
Traceback (most recent call last): File "python", line 95, in <module>TypeError: can only assign an iterable
perch� posso assegnare solo un iterabile in che senso ?
puoi fare una cosa così
codice:from collections import Counter # importi parte di una libreria esterna conteggio = dict(Counter(x for riga in matrice for x in riga)) # usi Counter su una dict comprehension print(conteggio)
adattando il codice e usando le mie variabili uso questo
outupt:codice:for i in range(91): ripetizione[1:i]=dict(Counter(x for riga in matrice for x in riga)) print(matrice) print(ripetizione)
come puoi notare sembra che si sia creato una sorta di riordinamento pero si sono creati anche numeri nuovi.codice:inserire la: 1 dato 42 47 55 57 61 79 72 65 42 47 55 57 61 79 72 65 inserire la: 2 dato 21 40 76 77 83 84 73 90 21 40 76 77 83 84 73 90 inserire la: 3 dato 03 45 49 53 58 77 48 46 3 45 49 53 58 77 48 46 [[42, 47, 55, 57, 61, 79, 72, 65], [21, 40, 76, 77, 83, 84, 73, 90], [3, 45, 49, 53, 58, 77, 48, 46]] [65, 65, 3, 72, 73, 76, 77, 79, 83, 84, 21, 90, 40, 42, 45, 46, 47, 48, 49, 53, 55, 57, 58, 61]
Mi sembri molto preparato nel utilizzo di python immagino che avrai una certa esperienza,potresti consigliarmi dei siti o libri che danno una buona preparazione a tuo parere se li ha letti ?
Il codice che ti ho postato ti restituisce un dizionario con i numeri della tua matrice come chiavi e come valori il numero di occorrenze di quel numero
Io mi sono avvicinato a python tramite un corso online (codeacademy) e poi ho letto la documentazione online e vari articoli/tutorial per approfondire e chiarire aspetti specifici. Non sono esperto, ne ho ancora di strada da macinare e il tempo da dedicare è sempre meno, purtroppo...
Ok però vedi quando eseguo la stampa non mi stampa ciò che dovrebbe cioè il dizionario e io numero delle occorrenze
Per prima cosa mi chiedo come mai questo non ti dia un errore, dato che i dizionari non sono hashabili...codice:ripetizione[1:i]=dict(Counter(x for riga in matrice for x in riga))
Seconda cosa, se tu hai già un dizionario creato da Counter, perché non ci cicli sopra e stampi direttamente i suoi valori?
Se ti servono anche i valori numerici che non sono presenti nella tua matrice, fai così:
codice:conteggio = dict(Counter(x for riga in matrice for x in riga)) for a in range(1, 91): try: print "{} - {}".format(a, matrice[a]) except KeyError: print "{} - {}".format(a, 0)
ammettiamo che conteggio={64: 1, 66: 1, 68: 1, 69: 1, 75: 1, 14: 1, 15: 1, 16: 2, 17: 1, 83: 1, 84: 1, 85: 1, 86: 1, 25: 1, 90: 1, 29: 1, 30: 1, 38: 1, 39: 1, 40: 1, 56: 1, 20: 1, 60: 1} se io volessi inserire ad esempio il numero delle ripetizioni di 64 in posizione matrice[64] come potrei fare? con un ciclo che meli inserisca senza contare le occorrenze dello 0 ? ciao grazie