somma_cifre_pagina_array.py

Script

# calcolo delle frequenze assolute dei numeri ottenuti sommando le cifre dei numeri di pagina di un libro
# con l'utilizzo degli array (liste Python)

print("Calcolo delle frequenze assolute dei numeri ottenuti sommando le cifre dei numeri di pagina di un libro")

n = int(input("Quante pagine ha il tuo libro? (n<1000) "))

# crea la variabile lista r con 28 valori nulli
r = 28*[0]

for i in range(1, n+1):
    # formule per l'estrazione delle cifre separate dal numero i
    c = i // 100                  # centinaia
    d = (i - c*100) // 10         # decine
    u = i - c*100 - d*10          # unità

    s = c + d + u                 # calcolo la somma delle varie cifre
    
    if s < 28:                    # se la somma delle cifre è < 28, incremento il contatore r[s]
        r[s] += 1
    else:                         # altrimenti, segnala un messaggio di errore
        print("Numero non previsto:", s)

# stampa il diagramma a barre delle frequenze
print("                                                                          Frequenze")
print(" 0┌────────────────────────────────────────────────────────────────────────────────")
for i in range(1,28):
    print("%2d│%s %d" % (i, r[i]*"█", r[i]))

Shell

Calcolo delle frequenze assolute dei numeri ottenuti sommando le cifre dei numeri di pagina di un libro
Quante pagine ha il tuo libro? (n<1000) 999
                                                                          Frequenze
 0┌────────────────────────────────────────────────────────────────────────────────
 1│███ 3
 2│██████ 6
 3│██████████ 10
 4│███████████████ 15
 5│█████████████████████ 21
 6│████████████████████████████ 28
 7│████████████████████████████████████ 36
 8│█████████████████████████████████████████████ 45
 9│███████████████████████████████████████████████████████ 55
10│███████████████████████████████████████████████████████████████ 63
11│█████████████████████████████████████████████████████████████████████ 69
12│█████████████████████████████████████████████████████████████████████████ 73
13│███████████████████████████████████████████████████████████████████████████ 75
14│███████████████████████████████████████████████████████████████████████████ 75
15│█████████████████████████████████████████████████████████████████████████ 73
16│█████████████████████████████████████████████████████████████████████ 69
17│███████████████████████████████████████████████████████████████ 63
18│███████████████████████████████████████████████████████ 55
19│█████████████████████████████████████████████ 45
20│████████████████████████████████████ 36
21│████████████████████████████ 28
22│█████████████████████ 21
23│███████████████ 15
24│██████████ 10
25│██████ 6
26│███ 3
27│█ 1