【发布时间】:2016-11-24 00:09:35
【问题描述】:
我正在尝试创建一个函数,其中检查给定值(作为字符串传递)以查看位数是 4 还是 6,并且它是一个数字。
我的第一个冲动是使用这段代码:
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() 以及如何最好地改进它的附加问题,问题本身是不同的(有人评论了return的用法)。不过,肯定会为另一个问题增加另一个视角。
【问题讨论】:
-
提示:
(4 or 6)自己评估什么?len(x)等于吗? -
不是重复的。差远了。是的,这两个问题都可以通过阅读同一套手册来解决,但不能重复。
标签: python boolean conditional operand