python でマージャンの点数計算をしてみる (4)

牌を切り出すのに少し試行錯誤してみたいと思う。

実行後、IDLE の画面に次のように表示されていると思う。

>>>

python を起動した時にも表示される。ここで、python の文を入力することができる。変数を表示させたい時は、そのまま変数名を入力すればよい。

牌を並べかえておこう。

>>> data_list.sort()
>>> data_list
['筒1', '筒1', '筒1', '索3', '索3', '索6', '索7', '索8', '萬3', '萬4', '萬5', '萬5', '萬6', '萬7']

並べ替えは辞書順になるので、萬を最初に、字を最後にするような並べ替えについては後で考えたいと思う。

リストの先頭にある牌を取得

>>> pai=data_list[0]
>>> pai
'筒1'

リストの先頭にある牌を除いたリストを取得。

>>> rest=data_list[1:]
>>> rest
['筒1', '筒1', '索3', '索3', '索6', '索7', '索8', '萬3', '萬4', '萬5', '萬5', '萬6', '萬7']

[1:] のような書き方ができるのは便利だと思う。マイナス値を指定すると文字列の末尾からカウントする。これも便利。

牌の種類と数字を取得

>>> pai[0]
'筒'
>>> pai[1]
'1'

やはり、数字は文字列の1でなく、int の 1 がよかろうか。

>>> int(pai[1])
1

しかし、東南西北白發中だとどうなるだろうか。

>>> jihai='東'
>>> jihai[0]
'東'
>>> jihai[1]
Traceback (most recent call last):
  File "<pyshell#66>", line 1, in <module>
    jihai[1]
IndexError: string index out of range
>>> 

これは後で考えることにしよう。

筒1筒1、筒1筒1筒1、筒1筒2筒3のパターンを探す必要がありそうだ。

つづく

それにしても、python のリストは便利すぎる。

[1,2,3,'test','test',True]

のように何でも入る。C言語などで苦労した者が見ると、何これと思うだろう。