我试着做一个函数,它将把多个变量与一个整数进行比较,并输出一个三个字母的字符串。我想知道有没有办法把这个翻译成Python。于是说:
x = 0
y = 1
z = 3
mylist = []
if x or y or z == 0 :
mylist.append("c")
if x or y or z == 1 :
mylist.append("d")
if x or y or z == 2 :
mylist.append("e")
if x or y or z == 3 :
mylist.append("f")
它将返回以下列表:
["c", "d", "f"]
这样的事情可能发生吗?
正如Martijn Pieters所述,正确且最快的格式是:
if 1 in {x, y, z}:
使用他的建议,您现在将拥有单独的if-语句,这样Python将读取每个语句,无论前者是true
还是false
。例如:
if 0 in {x, y, z}:
mylist.append("c")
if 1 in {x, y, z}:
mylist.append("d")
if 2 in {x, y, z}:
mylist.append("e")
...
这是可行的,但如果您喜欢使用字典(请参阅我在此所做的工作),您可以创建一个初始字典,将数字映射到您想要的字母,然后使用for循环:
num_to_letters = {0: "c", 1: "d", 2: "e", 3: "f"}
for number in num_to_letters:
if number in {x, y, z}:
mylist.append(num_to_letters[number])
使用字典结构可以更容易地解决您的问题,例如:
x = 0
y = 1
z = 3
d = {0: 'c', 1:'d', 2:'e', 3:'f'}
mylist = [d[k] for k in [x, y, z]]
您误解了布尔表达式的工作原理;它们不像一个英语句子那样工作,并且猜测你在这里谈论的是对所有名字的相同比较。您正在寻找:
if x == 1 or y == 1 or z == 1:
否则,x
和y
将自行计算(false
如果0
,true
否则)。
您可以通过对元组进行包含测试来缩短此时间:
if 1 in (x, y, z):
或者更好的是:
if 1 in {x, y, z}:
使用集
来利用恒定开销的成员资格测试(中的无论左边的操作数是什么都需要固定的时间)。
当您使用
或
时,python将运算符的每一边都视为单独的表达式。表达式x或y==1
首先被视为x
的布尔测试,然后如果为False,则测试表达式y==1
。
这是由于运算符优先。
或
运算符的优先级低于==
测试,因此先对后者进行评估。
但是,即使情况并非如此,并且表达式
x或y或z==1
实际上被解释为(x或y或z)==1
,这仍然不能达到您期望的效果。
x或y或z
将计算为“truthy”的第一个参数,例如不是false
,数值0或空(有关Python在布尔上下文中认为什么是false的详细信息,请参阅布尔表达式)。
因此对于值
x=2;y=1;z=0
,x或y或z
将解析为2
,因为这是参数中第一个类似true的值。则2==1
将是false
,即使y==1
将是true
。
反之亦然;针对单个变量测试多个值;
中使用x==1或2或3
将由于相同的原因而失败。在{1,2,3}x==1或x==2或x==3
或x。
我试图做一个函数,将多个变量比较为一个整数,并输出一个三个字母的字符串。我想知道是否有一种方法把它翻译成Python。所以说:
我试图创建一个函数,将多个变量与一个整数进行比较,并输出一个由三个字母组成的字符串。我想知道是否有办法将其翻译成Python。那么说: 它将返回以下列表: 这样的事情可能吗?
问题内容: Python如何将多个变量与一个值进行比较?,例如: 我希望返回一个列表: 问题答案: 方法1 方法2 使用元组或列表 方法3 最好是使用set集合
问题内容: 在AJAX请求之后,有时我的应用程序可能返回一个空对象,例如: 如何检查情况呢? 问题答案: ECMA 5+: Note, though, that this creates an unnecessary array (the return value of keys). Pre-ECMA 5: jQuery: lodash: Underscore: Hoek ExtJS Angula
本文向大家介绍如何对一个页面进行测试相关面试题,主要包含被问及如何对一个页面进行测试时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1、UI测试:页面布局、页面样式检查、控件长度是否够长;显示时,是否会被截断;支持的快捷键,Tab键切换焦点顺序正确性等。 2、功能测试:页面上各类控件的测试范围,测试点。结合控件的实际作用来补充检查点: 比如, 密码框是否*显示, 输入是否做trim处理等。
我在scala上,我有多个针对不同类(testsuites)的测试文件,每一个都使用testcontainers(来自同一脚本的init)。 当我启动项目中的所有测试时,所有测试都失败了(由于testContainers导致与数据库的连接出现问题)。 当我分别启动测试时,所有的测试都成功了。 有没有办法为多个测试文件(testsuites)只启动一个容器?似乎只对同一文件中的测试起作用。 @Mat
问题内容: 我是硒测试的新手。我想针对Internet Explorer,Firefox,Opera和Chrome在多种浏览器上运行。我必须遵循什么方法。大家能否建议我这是最好的过程。 硒Web驱动程序是否支持多种浏览器??? 我们已经编写了登录脚本。它可以分别在Firefox,Chrome和Internet Explorer中成功运行。但我想按顺序为那些多个浏览器运行它。 问题答案: 在此之前,
我需要针对给定的XSD文件验证多个XML文件。问题是XSD由两个文件组成。它们是嵌套的,尽管我知道哪个是第一个(其他文件的“父”)。在XML文件中,我使用命名空间来定义子节点在哪个XSD中定义