Подсчитайте количество каждого типа символов и отобразите результаты в виде гистограммы. - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь использовать набор символов Ascii для подсчета числа каждого типа символов для 'pride-and-prejudice.txt' и отображения результатов в виде гистограммы.

Вот предоставленный код моим репетитором.

Max_ascii = 127
Min_ascii = 32
a_place = 97
z_place = 122
file = open('pride-and-prejudice.txt')
training = file.read()
int_text = []
maxchars = len(training)
int_text = np.zeros(maxchars)
i = 0
for letter in training:
    ascii_val = ord(letter)
    if (ascii_val >= Min_ascii) and (ascii_val <= Max_ascii):
        int_text[i] = ascii_val
        i+=1

counts = np.zeros(Max_ascii-Min_ascii+1)
num_chars = len(counts)
ascii_vals = np.arange(Min_ascii,Max_ascii+1,1)
i=0
for val in ascii_vals:
    counts[i] = np.sum(int_text==val)
    i+=1

plt.bar(np.arange(1,z_place-a_place+2,1),counts[a_place-Min_ascii:z_place-Max_ascii])
plt.show()

Мой вопрос, что означает этот код?

counts[a_place-Min_ascii:z_place-Max_ascii]

Я знаю, что он считает символ от А до Я, но почему он должен быть написан ' [a_place-Min_ascii: z_place-Max_ascii]? Почему «count [a_place: z_place]» не работает?

Спасибо!

1 Ответ

0 голосов
/ 29 марта 2020

Я понятия не имею, о чем твой наставник, но скажу, что у него / нее есть ... интересный стиль кодирования.

позвольте мне показать вам кое-что. все, кроме последних 2 строк вашего репетитора, могут быть переписаны, чтобы выглядеть примерно так:

from collections import Counter
from string import ascii_lowercase

with open('pride_and_predjudice.txt') as f:
    chars = Counter(char for line in f for char in line.lower())

chars = {char: chars[char] for char in ascii_lowercase}

на данный момент, chars содержит в алфавитном порядке слова (предполагается, что вы используете python 3.6+) с подсчетом всех (строчных) букв. и вы должны быть в состоянии сделать что-то подобное ниже, чтобы отобразить это:

plt.bar(np.arange(len(chars)), np.array(chars.values()))
plt.show()

поэкспериментируйте с этим и посмотрите, добились ли вы успеха. удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...