指定された値(文字列として渡される)がチェックされて桁数が4か6のいずれかになる関数を作成しようとしています。それは数字です。IF、AND、ORをEQUALオペランドと一緒にPythonで使用する
def number(x):
if (len(x) == (4 or 6)) and x.isdigit():
print "True"
else:
print "False"
のみ上記のコードは、それがこれを渡し、なぜ私は理解していない...最初のテストの下を通っているが、他のテストのどれも:
私の最初の衝動は、このコードで行くことにしました
number("1234")
len()関数を切り離しても、正しく動作します。
def number(x):
if (len(x) == 4 or len(x) == 6) and x.isdigit():
print "True"
else:
print "False"
## Checks
number("1234")
number("123456")
number("abcd")
number("abcdef")
number("1")
number("a")
上記のコードは、すべてのテストに合格します。
だから私の質問は以下のとおりです。
- ここで何が起こっていますか?
- このためのクリーナーコードを作成する方法はありますか?
ありがとうございました!
**この質問にはブール演算子に関する基本的な概念は同じですが、問題自体はlen()、isdigit()の使用法、および改善のための最善の方法それ(誰かが返品の使用をコメントした)。しかし、間違いなく他の質問に別の考え方を追加します。
ヒント: '(4または6)'はそれ自身で何を評価しますか? 'len(x)'はそれと同じですか? –
重複していません。程遠い。はい、両方の質問は同じマニュアルのセットを読むことで解決されますが、重複はありません。 –