B1 · 第7集 · 4:59
Python变量赋值与运算
本集讲解Python中变量赋值的执行顺序、复合赋值运算符(如+=)以及交换变量值时的常见错误。
来源:jmbarbier / peertube.solidev.net · 许可:CC BY-SA 4.0
字幕
Puis je mets la valeur de d.
然后,我将 d 的值赋给它。
Danser, donc la valeur de d, danser, puis.
即 d 的值,赋值,然后。
Donc la valeur 3, valeur
所以 c 的值是 3,
de c dans b. et valeur
将 c 的值赋给 b,
de b dans a. Et l'idée c'est que ça se lit de la droite vers la gauche.
再将 b 的值赋给 a。其思路是从右向左读。
Je mets le 3 dans D, je mets le D dans C, je mets le C dans B,
我把 3 赋给 D,把 D 赋给 C,把 C 赋给 B,
je mets le B dans A.
再把 B 赋给 A。
Et ça permet juste d'éviter d'avoir à faire trois lignes pour
这样做的目的,只是避免在这里写三行代码,
quatre lignes ici en l'occurrence pour faire,
而实际上需要四行——具体来说,是为了实现:
c'est la même chose ça que.
这和下面的写法效果完全相同。
A égal 3, B égal 3, C égal 3,
A 等于 3,B 等于 3,C 等于 3,
D égal 3. Voilà, c'est juste plus économique en espace.
D 也等于 3。就这样,更节省空间。
Petit exercice.
一个小练习。
Je vous dis a est égal à 1.
我先声明:a 等于 1。
b est égal à 2, et je vais écrire a plus égal.
b 等于 2,接着我写:a 加等于
b moins trois.
b 减 3。
Et je vais afficher ensuite print
之后,我用 print 命令输出,
a b sans exécuter.
a 和 b 的值(暂不运行)。
Quel est le résultat de l'affichage
那么,输出结果会是什么?
Donc on pose la vidéo.
请暂停视频思考一下。
Et vous trouvez la valeur de a
请算出最终 a 的值,
et la valeur de b.
以及 b 的值。
à la fin, ce qui est affiché.
也就是最后屏幕上显示的内容。
Alors pour vérifier si vous avez trouvé,
为验证答案是否正确,
on va exécuter le code.
我们来实际运行这段代码。
On a a qui vaut 0, b qui vaut 2.
a 的值为 0,b 的值为 2。
Alors on y va.
那么我们开始吧。
On prend les valeurs.
我们取这些数值。
Donc là ici, dans ma boîte A, j'ai mis la valeur 1.
此时,在我的变量 A 中,我存入了数值 1。
Dans ma boîte B, j'ai mis la valeur 2.
在变量 B 中,我存入了数值 2。
Ensuite ici, cette ligne- là, je peux la réécrire:
接下来,这一行可以改写为:
a est égal à a plus b
a 等于 a 加 b,
moins 3. Et donc ça c'est ici,
再减去 3。因此,这里的意思是:
je prends d'abord la valeur de a plus b moins 3, cette valeur- là,
我先计算 a 加 b 再减 3 的结果,
pour la mettre à nouveau dans a.
再把这个结果重新赋给 a。
Ça, qu'est- ce que c'est?
这个操作代表什么?
A, il vaut 1, B, il vaut 2.
A 的值是 1,B 的值是 2。
moins trois, ça fait le calcul,
减去 3,进行这个运算,
ici ça me donne.
这里得到的结果是:
Un plus moins un, un plus moins un, ça me donne zéro.
1 加负 1,也就是 0。
Et je prends ce résultat et je le mets dans la variable a.
然后我把这个结果赋给变量 a。
Donc le résultat zéro vient se mettre dans a, d'où ici le fait que a vaut zéro.
所以结果 0 被存入 a,因此 a 的值变为 0。
B lui. J'ai jamais rien assigné à b autre que sa valeur initiale,
至于 b,我从未给它重新赋过值,
donc b reste à 2.
所以 b 仍保持初始值 2。
D'accord, voilà, donc il faut s'entraîner à lire, en fait, prévoir,
好的,明白了。实际上,我们需要多加练习,学会阅读并预判,
savoir qu'est- ce que va faire une opération.
清楚某个操作会产生什么结果。
Je fais d'abord la droite, puis je le mets à gauche.
我先计算右边的表达式,再把结果赋给左边。
Et quand on a ce petit truc- là, là ici, un plus égal, un moins égal,
当看到这种写法,比如 '+=', '-=', '/=',
un divisé égal, il faut bien se rappeler que c'est la valeur de la variable plus ce
一定要记住:这是将变量当前值与右侧数值运算后,
qu'il y a à droite qui vient se remettre dans la variable.
再把新结果重新存回该变量。
Donc voilà, il y a des fois des petites étapes quand même de traduction,
所以,这里确实存在一些小的翻译步骤。
là ici. Il se passe quand même pas mal de choses dans ces trois petits bouts de
就在这儿。
caractères ici.
这三个字符里其实发生了不少事情。
Voilà, on a la traduction de ça, a est égal à a plus b moins 3,
好了,这是它的翻译:a 等于 a 加 b 减 3。
et puis on remplace b par sa valeur, et puis on remplace a par sa valeur,
接着,我们把 b 替换为它的值,再把 a 替换为它的值。
et puis on fait le calcul, et puis on rebalance tout ça dans a.
然后进行计算,最后把结果重新赋值给 a。
Ça fait quand même pas mal d'opérations.
这确实涉及不少运算步骤。
Alors, deuxième petit exercice.
接下来是第二道小练习。
Je vais prendre une variable a
我定义一个变量 a,
qui vaut 5, une variable b qui vaut 2.
它的值是 5;再定义一个变量 b,值是 2。
Et puis je veux juste inverser le contenu, d'accord?
现在,我只想交换它们的内容,明白吗?
Donc après ça peut être 5, ça peut être 2.
交换后,a 可能是 5,b 可能是 2。
Je veux prendre la valeur de A, la mettre dans B,
我要把 A 的值放到 B 中,
je veux prendre la valeur de B et la mettre dans A.
再把 B 的值放到 A 中。
Donc j'écris a égale b, b
所以我写:a 等于 b,
égale a. Et je vais faire print a, b.
b 等于 a;然后执行 print(a, b)。
Est- ce que vous pouvez me prévoir
大家能预测一下,
ce qui sera affiché quand je vais faire le print a b?
当我执行 print(a, b) 时,屏幕上会显示什么?
Et pourquoi? À vous de jouer.
为什么呢?请你们思考一下。
Alors, contrairement à ce qu'on pourrait imaginer,
事实上,结果和我们预想的恰恰相反。
on n'a pas du tout fait ce qu'on voulait.
我们根本没实现想要的效果。
On voulait, en faisant a égale b, b égale a,
我们本想通过‘a 等于 b,b 等于 a’来交换 a 和 b 的值。
on voulait inverser la valeur de a et de b.
也就是交换 a 和 b 的值。
Inverser la valeur de a et de b, là ici.
就在这里,交换 a 和 b 的值。
C'est ce qu'on imaginait faire en faisant ça.
我们以为这样写就能实现这个目标。
En fait pas du tout, on a a et b qui sont égaux maintenant.
事实上完全不是这样,现在a和b相等。
Alors il faut reprendre les choses.
所以我们得重新梳理一下。
Là ici, on a fait.
这里,我们刚才做了。