Python游戏if语句执行

时间:2016-05-25 19:54:42

标签: python

我正在研究Python Pig Game作为一种爱好。我的具体问题是关于第二个if陈述。为什么在我之前设置if的{​​{1}}语句中运行?

player1roll = 'End Turn'

3 个答案:

答案 0 :(得分:0)

由于运营商的优先权。 AND比OR更严格,所以你的表达式被评估为:

   if dice1roll == 1 or (dice2roll == 1 and player2roll != 'End Turn'):

如果dice1roll等于1,它基本上是 True False OR 操作

参考:https://docs.python.org/3.3/reference/expressions.html#operator-precedence

答案 1 :(得分:0)

在此:

if dice1roll == 1 or dice2roll == 1 and player1roll != 'End Turn':

如果dice1roll == 1为真,则整个语句由于操作顺序而通过。看看这些分组:

>>> (1 or 0) and 0
0
>>> 1 or (0 and 0)
1
>>> 1 or 1 and 0
1
>>> (1 or 1) and 0
0
>>> 1 or (1 and 0)
1
>>> 0 or 1 and 0
0
>>> (0 or 1) and 0
0
>>> 0 or (1 and 0)
0

请改用以下内容:

if (dice1roll == 1 or dice2roll == 1) and player1roll != 'End Turn':

答案 2 :(得分:0)

我想"第二个if语句"你提到的就是这个:

and

这个与前一个之间的区别在于,第一个和#34;如果A B,请执行此操作",而第二个说"如果A B 和C ,执行此操作"。

"和"如果A和B都为真,则运算符将使语句为 (如果其中一个为假,则该语句为false)。 "或"只有当A B为真时,运算符才会使该语句成立(可以为真,但如果只有一个为真,那么该语句为真)。所以,虽然你需要A和B对于"和#34;陈述是真实的,你只有A或B(或两者)与"或"逻辑运算符是真的。

查看文档:{​​{3}}(注意:这适用于Python 2.7,但我认为在Python 3中也是如此)

编辑:我想我很慢,现在还有其他答案。一个指向重要的事情,运营商优先。 orTrue or True and False之前进行评估。所以第二个if语句实际上说:"如果是A或(B和C)",这意味着"如果A是真,或者B C都是是的,这样做"。 换句话说:True会让你(True or True) and False,同时False会让你flex