銀月の符号

Python 使い見習いの日記・雑記

どしゃぶり

朝から晩まで雨、そんな日のこと。

雨降り

一時的にどしゃぶり。室内+ヘッドホン装着+BGM でも余裕で雨音が聞こえるほど。すぐ静まったので降水量はたいしたことなかったのではないかと推測。

Python メモ unittest

家から出られないので Python 、 unittest と戯れる。optparse.OptionParser.parse_args とか logging.error の出力がテスト結果と混ざって邪魔くさかったため少し試してみる。結果、標準エラー出力への出力を伴う関数のテストは次のようにしておけば、一時的に黙らせることができることがわかった。わかってしまえばあたりまえなのだけど、何故かなかなか気づかなかった。同様の方法で標準出力 sys.stdout も黙らせることが可能。

import unittest
import sys

class SpamTestCase(unittest.TestCase):
    def setUp(self):
        sys.stderr = open(os.devnull, 'w')

    def tearDown(self):
        sys.stderr = sys.__stderr__ 

optparse.OptionParser.error メソッドは sys.exit を呼び出す。 sys.exit はインタプリタの終了、と見せかけて実は SystemExit 例外を投げる関数(os._exit とは違う)。よって error メソッドが呼ばれたかどうかは assertRaises でテストできる。

import unittest
import spam

class SpamTestCase(unittest.TestCase):
    def testParseArgs(self):
        self.assertRaises(SystemExit, spam.parse_args, ['--spam=ham', 'egg'])

ぷよ

日が沈んだころに DS 取り出して『ぷよぷよ!』の Wifi 対戦。ぷよ通ルール。あいかわらず 5 級 - 10 級間を行ったりきたり。成長止まったっぽい。以下、敗因とその対策。

  • 2ダブでつぶされて即死 > 相手を見て、危険を察知できるようになること。2回目の折り返し作成中など状況によっては速さを捨てて様子見をまぜる。また、本体の多色発火キープやキーぷよはずしなど。
  • 2ダブでつぶされて即死(予告ぷよが表示されるまで負けたことに気づかない) > 相手のことを見ていない、論外
  • 単発, 2連鎖で後折り折り返し狙われて埋まる > 見られているのに自分から埋めるとか単なる身投げ、副砲作りつつゾロ目などを待つ。ごくまれに、本体シンクロ発火で勝てる場合もある。相手のネクストぷよ、保有連鎖数をきちんと見る
  • 3, 4連鎖で催促されて本体ぶっぱするも打ち返される > 相手が副砲持っている時は本体だけ伸ばしたりしない。もしくは適度にキーぷよはずしする。
  • 12 連鎖以上先打ちされると勝てたためしがない > 無駄ぷよが多い、ゆえにすぐ飽和する。積みのバリエーション不足。とこぷよで 13 以上組む練習。ここまででかい連鎖だと消えるまでに時間がかかる、つまり赤岩3個程度返しても再び返ってくるので気を抜かない。
  • 4 連鎖全消しに負ける > 全消ししそこなってもあわてず、おちついて連鎖を伸ばす。4ダブ or 5 連鎖が組めればかえって優勢。うまく伸びなくても 4 連鎖目のぷよを増やす、カウンターぎみに縦に伸ばすなど延命のための努力を怠らないこと、もしかしたら即死せずにすむかも。あと、全消しを取れるように5手目くらいまでの研究をする。
  • 5 連鎖全消しに負ける > 土台のバリエーション不足、論外。 6 連鎖以上ぶつけるか、カウンターで終了のはずなのになぜ…
  • ツモがよくない、そして土台崩壊 > 運が悪いのではなく、応用力不足。ニコ動などで上級者のつみ方を観察

サイクリング

食後は雨がやんでいたのでサイクリング。