我正在尝试创建一个函数,其中检查给定值(作为字符串传递)以查看位数是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的用法),问题本身是不同的。不过,这无疑为另一个问题增加了另一个视角。
匿名用户
您可以使用中的操作符,如下所示:
def number(x):
if len(x) in (4, 6) and x.isdigit():
print "True"
else:
print "False"
其中in
检查给定容器中的容器。请注意,4或
对自己的评估是不希望的,这就是为什么你的第一个代码段失败。你可以在python shell上查看:
>>> 4 or 6
4
它有助于检查这一行的逻辑:
if (len(x) == (4 or 6)):
(4或6)
子句包含逻辑或
短路。值
4
为真,因此将对其进行计算并返回到=
关系比较。
或
的工作方式是,它的左侧被计算为布尔值,如果为true,则返回其值。如果左侧不是布尔值true,则计算右侧并返回其值。
因为
4或...
的左边在布尔意义上是真的,所以永远不会计算右边。Python甚至不看过去的4或
。如果左边的值是一个假值(如0),那么将计算或
的右边。
要查看此操作,请尝试打印4或6。输出为4。
因此,由于4是硬编码的真值,所以如果(len(x)==4)
,您的比较在语义上与相同-也就是说,由于4是true,因此从不计算6。
我想你真正想知道的是
len(x)
是4还是6。您可以通过以下两种方式将其编码:
if(len(x) == 4 or len(x) == 6 ...
if(len(x) in (4,6) ...
问题内容: 我有以下代码: 在哪里。 如果第一个陈述为真会怎样? Java还会检查第二条语句吗?因为为了使第一条语句为真,所以HashMap不应包含给定的键,因此如果选中了第二条语句,则将获得。 简单来说,如果我们有以下代码 Java将在第一种情况下检查b是否a为false,a在第二种情况下是否为true? 问题答案: 不会被评估。这非常有用。例如,如果你需要测试String是否为null或为空,
问题内容: 我正在通过LPTHW,遇到了一些我听不懂的东西。您何时会需要布尔值或返回布尔值以外的其他值?LPTHW文本指出所有语言(如python)都具有此行为。他是说解释型语言还是编译型语言,还是鸭子类型的还是静态类型的语言? 我运行了以下代码: 请帮助我了解这里发生了什么。 根据文档:http : //docs.python.org/2/library/stdtypes.html 除非另有说明
问题内容: 我知道and表达式存在于python中,但是有任何表达式吗?还是通过某种方式组合它们以产生与表达式相同的效果? 我的代码看起来像这样: 这样,我的意思是,如果用户输入“ a”并且任何类型的“ a”都包含在先前定义的列表中,我是否可以从给定列表中删除所有类型的“ a”? python告诉我在以下方面存在问题: 他告诉我: 问题答案: 正如Matt Ball的回答所解释的, 是“和/或”。
给你一个整数列表,长度为偶数。考虑这样一个操作,您在nums中选择任意数字,并用[1,max(nums)]之间的值更新它。返回所需的操作数,使得对于每个i,nums[i]+nums[n-1-i]等于相同的数。问题可以贪婪地解决。 注意:n是数组的大小,max(nums)是nums中的最大元素。 null 设i=0,nums[0]+nums[6-1-0]=4。 i=1,nums[1]+nums[6-
本文向大家介绍Nginx中IF、AND、OR语句用法实例,包括了Nginx中IF、AND、OR语句用法实例的使用技巧和注意事项,需要的朋友参考一下 在上一篇文章:《Nginx if语句加正则表达式实现字符串截断》中, 我们介绍过了使用if来进行截断字符串的用法, 这次我们来了解下if的逻辑用法: 什么是逻辑用法呢, 就程序中的and、or关系, 就叫做逻辑了. NGINX支持if的 and 与 o
我正在从命令行运行cucumber方案 以下命令对我有用 mvn测试-Dcumber。options=“--tags@Admin--tags@sanity” 当我运行复杂命令时,它不起作用。 我想运行带有标签(管理和健全)或(雇员和健全)的cucumber场景 mvn test-dcu number . options = "-tags(@ Admin和@sanity)或(@Employee和@s