我試圖創建一個函數,其中給定的值(作爲字符串傳遞)被檢查以查看數字的位數是4還是6,並且這是一個數字。在Python中使用IF,AND或OR與EQUAL操作數
我的第一個念頭是去與此代碼:
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)'是否等於? –
不重複。差遠了。是的,兩個問題都可以通過閱讀相同的手冊來解決,但不能重複。 –