Es. 4. 08/05
Ringrazio Carmosina per la soluzione proposta che e' originale, e funziona. E' solo un po' prolissa... questo mi consente di spiegare che e' piu' comodo usare le liste (in altri linguaggi di programmazione si chiamano array o vettori) quando occorre gestire tante variabili dello stesso tipo con un indice. Usando la funzione ord si puo' ricavare il codice ascii/unicode di ogni singolo carattere. Quindi si puo' per esempio preparare una lista con 26 elementi a zero:
count=[0]*26
e poi scorrendo l'input carattere per carattere si puo' sommare 1 all'elemento corrsipondente alla lettera dell'alfabeto (0='A', 1='B' etc:
if 'A'<=x<='Z': count[ord(x)-ord('A')]+=1
... e similmente anche per le lettere minuscole.
SI puo' fare anche con il count! (che e' una ottima idea):
for c in range(26): count[i]+=elemento.count(chr(i+ord('A')));
e per le minuscole:
for c in range(26): count[i]+=elemento.count(chr(i+ord('a')));
quando i vale 0, ord('A') vale 65, chr(i+ord('A')) e' 'A'
quando i vale 1, ord('A')+1 vale 65, chr(i+ord('A')) e' 'B'
quando i vale 2, ord('A')+2 vale 66, chr(i+ord('A')) e' 'C'
e cosi' via...
(In python questo esercizio si puo' svolgere anche con i dizionari.)