我试图创建一个函数,将多个变量与一个整数进行比较,并输出一个由三个字母组成的字符串。我想知道是否有办法将其翻译成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"]
这样的事情可能吗?
27条答案
按热度按时间pinkon5k1#
这里还有一种方法:
它是列表理解和任何关键字的混合。
6tr1vspr2#
这个
or
正如这个答案所解释的,它不是那样工作的。而一般的答案是使用
这不是针对具体问题的最佳方案。在您的情况下,您正在进行重复测试,因此有必要编写一组以下变量:
我们可以使用字典简化此操作-这将产生相同的值:
或者如果
mylist
如果是任意的,则可以在值上循环,并将其与Map匹配:llew8vvj3#
您可以通过两种方式来开发它
或
uujelgoq4#
问题
而用于测试多个值的模式
非常可读,在许多情况下都能工作,但有一个陷阱:
但是我们想要
解决方案
前面表达式的一个概括基于ytpillai的答案:
可以写成
虽然此表达式返回正确的结果,但其可读性不如第一个表达式:-(
qltillow5#
这对你有帮助。
a64a0gku6#
你可以把这个联合起来
在一个变量中。
将我们的条件更改为:
输出:
xmd2e60i7#
单线解决方案:
或:
hc2pp10m8#
如果没有dict,请尝试以下解决方案:
并给出:
fnatzsnv9#
您可以使用字典:
jgwigjjp10#
看起来你在制造凯撒密码。
更普遍的方法是:
输出
不确定这是否是代码的预期副作用,但输出的顺序将始终被排序。
如果这是您想要的,最后一行可以更改为:
w6mmgewl11#
要使用一个值测试多个变量,请执行以下操作:
if 1 in {a,b,c}:
要使用一个变量测试多个值,请执行以下操作:if a in {1, 2, 3}:
wlsrxk5112#
这可以很容易地做到
sirbozc513#
也许你们需要输出位集合的直接公式。
让我们Map到bits:
'c':1 'd':0xb10 'e':0xb100 'f':0xb1000
isc的关系(即“c”):使用数学公式https://youtu.be/kadkcgbgk0k?list=plni9xbpdzuamul8htsl6vtopqrrn3hhfp&t=315
[c] :
(xyz=0 and isc=1) or (((xyz=0 and isc=1) or (isc=0)) and (isc=0))
[d] :((x-1)(y-1)(z-1)=0 and isc=2) or (((xyz=0 and isd=2) or (isc=0)) and (isc=0))
...通过以下逻辑连接这些公式:
逻辑
and
是方程的平方和逻辑
or
是方程的乘积你们有一个表示和的总方程,你们有和的总公式
那么和1是c,和2是d,和4是e,和5是f
在此之后,您可以形成预定义的数组,其中字符串元素的索引将对应于就绪字符串。
array[sum]
给你线。8mmmxcuj14#
用python表示伪代码的最具python风格的方式是:
sirbozc515#
你误解了布尔表达式的工作原理;它们不像一个英语句子,你猜这里所有名字的比较都是一样的。您正在寻找:
if 1 in (x, y, z):
if 1 in {x, y, z}: