Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:var=var/5*2的计算结果与var/=5*2的计算结果不同_Python_Operators_Variable Assignment - Fatal编程技术网

Python:var=var/5*2的计算结果与var/=5*2的计算结果不同

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

我对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 / 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
For
var=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的简单转换。您必须了解规则,并且可能需要重新编写表达式才能正确计算。我猜在简单的例子中,这只是一个简单的转换,但对于更复杂的表达式,您必须“精心设计”正确的表达式,以确保其正确计算。