Blanktar

  1. top
  2. blog
  3. 2015
  4. 06

pythonでキリ番かどうか判定する

pythonで与えられた数字がキリ番かどうかを判定するコード書きました。ほぼ正規表現です。

import re

def isKiri(x):
    if re.match('^([0-9])\\1+$', str(x)):  # ゾロ目
        return True

    if re.match('^[0-9]0+$', str(x)):  # 100とか200とか。(なんて言うんだ)
        return True

    if str(x) in '01234567890' or str(x) in '09876543210':  # 連番
        return True

    return False

こんな感じで。

連番だけちょっと綺麗じゃない感じになってしまった。 0123とかなら対応できるけど、7890123みたいのはダメ。まあ、そいつをキリ番に含めるのかどうかは知らないけれど。

def isKiri(x):
    if all(y == str(x)[0] for y in str(x)[1:]):  # ゾロ目
        return True

    if all(y == '0' for y in str(x)[1:]):  # 100とか200とか。(なんて言うんだ)
        return True

    if str(x) in '01234567890' or str(x) in '09876543210':  # 連番
        return True

    return False

正規表現使わないとこんな感じ。 大して長さは変わらないけれど、読みづらい。