2016年7月29日金曜日

開発環境

Think Python (Allen B. Downey (著)、 O'Reilly Media)のChapter 11.(Dictionaries)のExercises 11-6..(No. 2647)を取り組んでみる。

Exercises 11-6.(No. 2647)

コード(Emacs)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import pronounce


def getWordlist(filename):
    with open(filename) as f:
        wordlist = [line.strip() for line in f]
    return wordlist

pronounces = pronounce.read_dictionary()


def isHomophones(word1, word2):
    if word1 in pronounces and word2 in pronounces:
        return pronounces[word1] == pronounces[word2]
    return False


def check(word, wordlist):
    word1 = word[1:]
    word2 = word[0] + word[2:]
    if (word1 in wordlist and isHomophones(word, word1) and
            word2 in wordlist and isHomophones(word, word2)):
        return True
    return False

if __name__ == '__main__':
    filename = 'words.txt'
    wordlist = getWordlist(filename)
    with open(filename) as f:
        for line in f:
            word = line.strip()
            if check(word, wordlist):
                print('{0}, {1}, {2}: {3}'.format(
                    word, word[1:], word[0] + word[2:], pronounces[word]))

入出力結果(Terminal, IPython)

$ ./sample6.py
llama, lama, lama: L AA1 M AH0
llamas, lamas, lamas: L AA1 M AH0 Z
scent, cent, sent: S EH1 N T
$

0 コメント:

コメントを投稿