授業でも使用した日本国憲法前文(英語版)のテキストデータを読み込んで,アルファベットの各文字の出現頻度を調べて表示するプログラムを作成しましょう.大文字と小文字は区別しないでAもaも両方ともAとしてカウントしています.
Student number: s246099 A: 107 B: 13 C: 46 D: 51 E: 207 F: 36 G: 20 H: 86 I: 117 J: 8 K: 2 L: 73 M: 17 N: 113 O: 125 P: 57 Q: 0 R: 96 S: 92 T: 140 U: 39 V: 24 W: 32 X: 2 Y: 18 Z: 1 ------------------------ |
filter 関数とラムダ式で26種類の文字の頻度をリスト化します.6月4日の演習問題 v. でやりましたね.
|
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がPythonのプログラムとなっていますので,実行してエラーの無いことを確認してから提出してください. 指定の解答用紙を使用していない,実行時にエラーが出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください. |
解答例
# #############################
#
# プログラミング入門II 宿題 2025.6.25
# 学生番号: s246099
# 氏名: 松江 花子
#
# #############################
print('Student number: s246099')
print()
const = []
f = open('THE_CONSTITUTION_OF_JAPAN.txt')
while True:
line = f.readline()
if not line:
break
const.append(line)
f.close()
const = list(map(lambda x: x.replace('\n', ''), const))
const = [const[i] for i in range(len(const)) if const[i]]
freq = [0 for _ in range(26)]
ln = len(const)
for i in range(26):
for j in range(ln):
freq[i] += len(list(filter(lambda c: c == chr(65 + i) or c == chr(97 + i), const[j])))
for i in range(26):
print(f'{65 + i:c}: {freq[i]:3}')
print('\n------------------------\n')
|