問題
[10/30/2012] Challenge #109 [Easy] Digits Check : dailyprogrammer
概要
与えられた文字列が数字のみで成り立っていればTrue、そうでなければFalseを返す関数を書く。
たとえば小数点(.)を含むものはFalseを返す。入力
入力:数字のみを含むか含まない文字列。空でない。
出力:TrueまたはFalse例
"123"はTrue, "123.123"はFalse, "abc"はFalse
ノート
簡単すぎるので余裕のある人は文字列検索を高速化しましょう。以下の方法などいかがでしょ。
Knuth–Morris–Pratt algorithm - Wikipedia, the free encyclopedia
クヌース-モリス-プラット法 - Wikipedia
解答
入力は空文字列チェックしなくていい。
def digits_check(s): return all(map(lambda x: x.isdigit(), s)) print digits_check("123") # => True print digits_check("123.123") # => False print digits_check("abc") # => False
KMP法は…やるとしたら別記事で。