ハイファットマンの友人M

ハイファットマンはおともだちです。ほぼメモ

言語処理100本ノック(その3)

第1章 06から09まで

06.

paraparaparadise"と"paragraph"に含まれる文字bi-gramの集合を,それぞれ, XとYとして求め,XとYの和集合,積集合,差集合を求めよ.さらに,'se'というbi-gramがXおよびYに含まれるかどうかを調べよ.

# 05のを少し変更
def bi_gram(str_split):
    n_gram = []
    for i in range(0, len(str_split) - 1):
        n_gram.append(str_split[i:i + 2])
    return n_gram

str1 = 'paraparaparadise'
str2 = 'paragraph'
print(bi_gram(str1))

x = set(bi_gram(str1))
y = set(bi_gram(str2))

print(x | y) # 和集合
print(x & y) # 積集合
print(x - y) # 差集合
print('se' in x | y)

# 出力
# {'ph', 'se', 'ar', 'pa', 'gr', 'di', 'ra', 'ag', 'ad', 'is', 'ap'}
# {'ap', 'ra', 'ar', 'pa'}
# {'is', 'se', 'di', 'ad'}
# True

07.

引数x, y, zを受け取り「x時のyはz」という文字列を返す関数を実装せよ.さらに,x=12, y=“気温”, z=22.4として,実行結果を確認せよ.

def template_text(x, y ,z):
    print("{}の時の{}は{}".format(x, y, z))

template_text(12, '気温', 22.4) # 12の時の気温は22.4

08.

与えられた文字列の各文字を,以下の仕様で変換する関数cipherを実装せよ.

英小文字ならば(219 - 文字コード)の文字に置換 その他の文字はそのまま出力 この関数を用い,英語のメッセージを暗号化・復号化せよ.

def cipher(string):
    text = ''
    for c in string:
        if c.islower():
            text += (chr(219 - ord(c)))
        else:
            text += (c)
    return text

str = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."

print(str)
print(cipher(str))
print(cipher(cipher(str)))

# 出力
# I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind .
# I xlfowm'g yvorvev gszg I xlfow zxgfzoob fmwvihgzmw dszg I dzh ivzwrmt : gsv ksvmlnvmzo kldvi lu gsv sfnzm nrmw .
# I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind .

09.

スペースで区切られた単語列に対して,各単語の先頭と末尾の文字は残し,それ以外の文字の順序をランダムに並び替えるプログラムを作成せよ.ただし,長さが4以下の単語は並び替えないこととする.適当な英語の文(例えば"I couldn’t believe that I could actually understand what I was reading : the phenomenal power of the human mind .“)を与え,その実行結果を確認せよ.

import random 

str = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."

random_arry = []
for s in str.split():
    if len(s) > 4:
        list_s = list(s)[1:len(s)-1]
        random.shuffle(list_s)
        text = s[0] + ''.join(list_s) + s[len(s)-1]
        random_arry.append(text)
    else:
        random_arry.append(s)

print(' '.join(random_arry))
# I culn'odt blvieee that I colud alltcuay utresnandd what I was rnieadg : the pheoenmnal poewr of the hmuan mind .

やっと準備運動おわった

pythonわからなすぎて調べながらやってるから時間がかかる