牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

《リベンジ》3の倍数と3が付く数字だけアホになり、5の倍数だけランバ・ラルっぽくなるスクリプトをやってみた《やり直し》

昨日やった『3の倍数と3が付く数字だけアホになり、5の倍数だけガルマっぽくなるスクリプトをPythonでやってみた - 牌語備忘録 - pygo』が間違ってた上にコードが長いので、いくらか短くしてみた。
今回はランバ・ラルで。

python
#!/usr/local/bin/python
# *-# -*- coding: utf-8 -*-
#3の倍数と3が付く数字だけアホになり、5の倍数だけランバ・ラルっぽくなるスクリプト

normal = {0:"",1:"いち",2:"に",3:"さん",4:"よん",5:"ご",
          6:"ろく",7:"しち",8:"はち",9:"きゅう",10:"じゅう"}
funny = {0:"",1:"ぅい〜っち",2:"ぬぅい〜",3:"しゃぁ〜ん",4:"しぃ〜",5:"ごぉ",
         6:"ろおぉ〜うく",7:"すうぃ〜ち",8:"ふはぁ〜ち",9:"きゅぅ〜",10:"じぃゅうぅ"}
ral = {0:"ぅ...うぬぼれるなよ、お前の力で勝ったのではない。",
       5:"ぉう、思いきりのいいパイロットだな、手ごわい。しかし...",
       40:"よんじゅ...見ておくがいい。戦いで敗れるということはこういうことだぁぁぁっ!!"}

def san_aho_go_ral():
    li = []
    for n in range(1, 40):
        if n % 3 == 0 or str(n).count("3"):
            dict = funny
        else:
            dict = normal
        word = num_to_str(dict, n)
        if not n % 5:
            word += ral[num_div(n, -1)]
        li.append(word)
    else:
        li.append(ral[40])
    return "\n".join(li)

def num_div(n, p):
    return int(str(n)[p])

def num_div(n, p):
    return int(str(n)[p])
        
def num_to_str(dict, n):
    s = dict[n if n < 10 else 10]
    if 10 <= n:
        s += dict[num_div(n, -1)]
    if 20 <= n:
        s = dict[num_div(n, -2)] + s
    return s

if __name__ == "__main__":
    print san_aho_go_ral()

少しすっきりした(゚Д゚)

結果

(ラルが言ってるイメージでお読みください。)

いち
に
しゃぁ〜ん
よん
ごぉう、思いきりのいいパイロットだな、手ごわい。しかし...
ろおぉ〜うく
しち
はち
きゅぅ〜
じゅうぅ...うぬぼれるなよ、お前の力で勝ったのではない。
じゅういち
じぃゅうぅぬぅい〜
じぃゅうぅしゃぁ〜ん
じゅうよん
じぃゅうぅごぉぉう、思いきりのいいパイロットだな、手ごわい。しかし...
じゅうろく
じゅうしち
じぃゅうぅふはぁ〜ち
じゅうきゅう
にじゅうぅ...うぬぼれるなよ、お前の力で勝ったのではない。
ぬぅい〜じぃゅうぅぅい〜っち
にじゅうに
ぬぅい〜じぃゅうぅしゃぁ〜ん
ぬぅい〜じぃゅうぅしぃ〜
にじゅうごぉう、思いきりのいいパイロットだな、手ごわい。しかし...
にじゅうろく
ぬぅい〜じぃゅうぅすうぃ〜ち
にじゅうはち
にじゅうきゅう
しゃぁ〜んじぃゅうぅぅ...うぬぼれるなよ、お前の力で勝ったのではない。
しゃぁ〜んじぃゅうぅぅい〜っち
しゃぁ〜んじぃゅうぅぬぅい〜
しゃぁ〜んじぃゅうぅしゃぁ〜ん
しゃぁ〜んじぃゅうぅしぃ〜
しゃぁ〜んじぃゅうぅごぉぉう、思いきりのいいパイロットだな、手ごわい。しかし...
しゃぁ〜んじぃゅうぅろおぉ〜うく
しゃぁ〜んじぃゅうぅすうぃ〜ち
しゃぁ〜んじぃゅうぅふはぁ〜ち
しゃぁ〜んじぃゅうぅきゅぅ〜
よんじゅ...見ておくがいい。戦いで敗れるということはこういうことだぁぁぁっ!!