Python:var=var/5*2的计算结果与var/=5*2的计算结果不同
我对Python还不熟悉,但我无法理解这一点。我确信我忽略了一些非常简单的事情 我正在学习Python中的复合赋值运算符,并学习了以下表达式:Python:var=var/5*2的计算结果与var/=5*2的计算结果不同,python,operators,variable-assignment,Python,Operators,Variable Assignment,我对Python还不熟悉,但我无法理解这一点。我确信我忽略了一些非常简单的事情 我正在学习Python中的复合赋值运算符,并学习了以下表达式: var = var / 5 * 2 var = 20 / 5 * 2 var = 4 * 2 var = 8 var = var / (5 * 2) var = 20 / (10) var = 2.0 var=var/5*2 可以使用/=运算符编写为: var/=5*2 这是我不明白的。如果我设置var=20,然后求解这个表达式: var = var
var = var / 5 * 2
var = 20 / 5 * 2
var = 4 * 2
var = 8
var = var / (5 * 2)
var = 20 / (10)
var = 2.0
var=var/5*2
可以使用/=运算符编写为:
var/=5*2
这是我不明白的。如果我设置var=20,然后求解这个表达式:
var = var / 5 * 2
var = 20 / 5 * 2
var = 4 * 2
var = 8
var = var / (5 * 2)
var = 20 / (10)
var = 2.0
我得到的答案是8
如果我将'var=var/5*2'放入空闲状态,我会得到8作为var的新值
但是,如果我把var放回20,并在IDLE中求解这个表达式:
var/=5*2
我得到的答案是2.0,作为var的新值
我不明白为什么在使用复合赋值运算符时会得到不同的结果
如果我设置var=20并求解此表达式:
var = var / 5 * 2
var = 20 / 5 * 2
var = 4 * 2
var = 8
var = var / (5 * 2)
var = 20 / (10)
var = 2.0
然后我得到了相同的答案,没有使用复合赋值运算符
因此,在默认情况下,/=运算符似乎在表达式中添加了括号。这就是正在发生的事情吗?如果我不理解如何恰当地使用复合赋值运算符,我可以看到这会导致很多错误
如果有人能向我解释一下,我将不胜感激。谢谢
var / 5 * 2
意味着
因为算术规则是这样说的,任何其他结果都是不正确的
相反地
var /= 5 * 2
表示“将var
除以右侧的表达式并更新var
”
所以它相当于
var = var / (5 * 2)
没有其他结果是有意义的
如果您希望这些命令的计算结果有所不同,请调整您的期望值,或者始终使用括号来确保含义明确 这里的重点是关于运算符的优先级。 当您使用var=var/5*2时,由于优先级的原因,首先进行除法,然后进行乘法。但当您使用var/=5*2时,*的优先级高于/=,因此稍后将对其进行计算,并得到2.0作为答案。 只需参考一次运算符的优先级。 希望这有帮助。作业
var /= 5 * 2
Forvar=20
意味着Python在左侧将var
计算为20
,在右侧将5*2
计算为10
,然后在可能的情况下将var
更改为20/10
,也就是说2
很简单,兄弟
检查运算符的运算符优先级。像+、-、*、/、%这样的算术运算符的优先级总是高于复合运算符。
这就是为什么,var=20/5*2=>4*2=8.0
(“/”的优先级高于*(星号))和
var1=20,
var1/=5*2=>20/10=2.0
(星号的优先级高于复合运算符)
希望你得到它
检查此项:获取信息。首先计算右手边的值,然后执行除法等于。化合物不在其周围添加()-它使用右手边的所有值执行所需操作。如果你想除以5,那么就乘以2,然后再加上
var/=5
,然后再加上var*=2
。或者改为执行var*=2/5
。。当您看到/=或+=或-=。。。那里的接线员将是最后一位接线员。所以它实际上不仅仅是表达式x=xy到x=y的简单转换。您必须了解规则,并且可能需要重新编写表达式才能正确计算。我猜在简单的例子中,这只是一个简单的转换,但对于更复杂的表达式,您必须“精心设计”正确的表达式,以确保其正确计算。