Python 如何分解此函数?

Python 如何分解此函数?,python,Python,我有一个关于python代码的问题 def myst(val1, val2): if(val1 and val2): return 'a' elif(val1 and not val2): return 'b' elif(not val1 and val2): return 'c' else: return "d" 问题: myst(not(not False and True), not(not False or False)) 正确答案是什么 我试图分解这个函数,

我有一个关于python代码的问题

def myst(val1, val2):
 if(val1 and val2):
  return 'a'    
elif(val1 and not val2):
 return 'b' 
elif(not val1 and val2):
 return 'c' 
else:
 return "d"
问题:

myst(not(not False and True), not(not False or False))
正确答案是什么

我试图分解这个函数,所以它会变成
myst(不是(True,True),但这是不正确的。

首先应该在方法调用时计算布尔表达式

val1
=
非(非假与真)
=>
非(真与真)
=>
非(真)
=>

val2
=
非(非假或假)
=>
非(真或假)
=>
非(真)
=>

因此,在这个方法调用中,
val1
val2
都将为False


在if条件之后,当两个参数都为
False
时,none条件匹配,因此将选择else语句,最终返回值将为“d”。

输出将为
d
,过程如下所示:-

我希望它能对你有所帮助。

myst(不(不假不假),不(不假不假))

让我们看第一个参数,它是“不是(不是假的和真的)”

非(非假与真)=>非(真与真)=>非(真)=>假

现在来看第二个论点,它是“不(不假或假)”

非(非假或假)=>非(真或假)=>非(真)=>假

所以,这两个论点都是错误的 两个伪参数都满足的唯一条件是last else: 所以它将返回“d”


希望它能有所帮助如果你像在代数中那样减少陈述,它就会变得清晰:

myst(not(not False and True), not(not False or False)) ... parentheses first
myst(not(True and True), not(True or False))           <-- "not X" has priority
myst(not(True), not(True))
myst(False,False)
"d"

这是家庭作业吗?它来自考试。
不假
不假
不是(…和…
不是(…或…
分别来自
不是…
不是…
),然后你拿起一张纸和一支笔解决它。myst(假,假)结果先用d括号,先用内括号,再向外求解。
def myst(val1, val2): return "dcba"[2*val1+val2]

False, False = 00 = 0 --> d
False, True  = 01 = 1 --> c
True,  False = 10 = 2 --> b
True,  True  = 11 = 3 --> a