import string
fp=open('text.txt','r')
file_list=fp.readlines()
print file_list
freqs = {}
for line in file_list:
line = filter(lambda x: x in string.letters, line.lower())
for char in line:
if char in freqs:
freqs[char] += 1
else:
freqs[char] = 1
print freqs
[это] ошибка или особенность?
BLOCKQUOTE>Ни. Это ... особенность. Что происходит, когда синтаксический анализатор видит присвоение локальной переменной в коде, он идет вперед и добавляет имя в области видимости (начиная с этой линии, возможно, затенение и другие названия, как ваш метод здесь). Со значением по умолчанию
nil
. Если фактическое назначение не то и не выполняется, новая локальная переменная остается в объеме и по-прежнему имеет значениеnil
.Это отражено в https://docs.ruby-lang.org/en/2.5.0/syntax/assignment_rdoc.html#label-Local+Variables+and+Methods .