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
正規表現使わないとこんな感じ。 大して長さは変わらないけれど、読みづらい。