高級コンピューター言語では、演算子は比較的多様です。実際、それらはすべて私たちの日常のニーズから生じています。
算術演算子
以前、加算、減算、乗算、除算などの四則演算について説明しました。対応する記号は + - * / です。さらに、剰余も含まれます。これらは算術演算子です。実際には、これらよりも多くの算術演算子があります。中学数学の知識を踏まえると、読者もべき乗や平方根などもあるはずだと考えるはずだ。
以下に、すべての演算子を示す表を示します。暗記する必要はありませんが、今後使用するが覚えられるか自信がない場合は、よく見て確認してください。
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | 10+20 输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | 10-20 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | 10 * 20 输出结果 200 |
/ | 除 - x除以y | 20/10 输出结果 2 |
% | 取余 - 返回除法的余数 | 20%10 输出结果 0 |
** | 幂 - 返回x的y次幂 | 10**2 输出结果 100 |
// | 取整除 - 返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
それは奇妙ではありません。これは読者への提案です。IDLE を開いて上記の演算子を順番に試してください。
リストに記載されている裁判官は、中学校の数学の知識を使用して、上記の演算子を混合演算で計算する順序を考えることができます。そして、それが中学校の数学のルールと一致しているかどうか、自分で試してみてください。 (一貫性があるべきです。コンピューター科学者は、私たちを一緒に苦しめるような他のことを考え出すことはありません。)
比較演算子
いわゆる比較とは、1 つのものを 2 つのものと比較することを意味します。これはある国で最も一般的な状況であり、親は自分の子供が何らかの点で劣っているのではないかと恐れ、自分の子供と銀行の給料を比較し、常に自分の方が低いと感じています。
高レベルのコンピューター言語プログラミングでは、同じ型の 2 つの量を比較できます。たとえば、2 つの数値を比較したり、2 つの文字列を比較したりできます。これらは同じタイプの 2 つであることに注意してください。異なる種類の量を比較できますか?まず、この比較には意味がありません。 2オンスの肉と3フィートの布を比較するようなものです。この比較は無意味です。したがって、実際のプログラミングでは、異なる種類の量の比較に注意する必要があります。
ただし、一部の言語では、この無意味な比較が許可されています。比較するときに、数値以外の値を数値型の比較に変換するためです。これについては後で実験してみます。
比較演算子については、小学校の数学で「より大きい」、「より小さい」、「等しい」、「等しくない」などを学びました。 Python であっても、見慣れないものは何もありません。以下の表を見てみましょう:
以下では、変数 a が 10、変数 b が 20 であると仮定しています。
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y | (a < b) 返回 true。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
上記の表の例では、表示比較の結果は true または false を返します。これは何を意味しますか?この比較が確立されている場合は true が返され、それ以外の場合は比較が確立されていないことを示す False が返されることがわかります。
次のように比較演算を実行し、想像力を働かせて比較演算に習熟してください。
>>> a=10 >>> b=20 >>> a>b False >>> a<b True >>> a==b False >>> a!=b True >>> a>=b False >>> a<=b True >>> c="5" #a、c是两个不同类型的量,能比较,但是不提倡这么做。 >>> a>c False >>> a<c True
論理演算子
まず、論理とは何かについて話しましょう。ハン・ハン氏は論理を次のように分類しています。
ロジックには 2 種類あり、1 つはロジック、もう 1 つは中国ロジックです。 ————ハン・ハン
この分類は確かに非常に正確です。多くの場合、中国人は非常に奇妙な論理を持っています。ただし、Python で話されるのはロジックであり、中国のロジックではありません。
逻辑(logic),又称理则、论理、推理、推论,是有效推论的哲学研究。逻辑被使用在大部份的智能活动中,但主要在哲学、数学、语义学和计算机科学等领域内被视为一门学科。在数学里,逻辑是指研究某个形式语言的有效推论。
論理の問題については、興味があれば「国立台湾大学公開講座: 論理」を聞くことができます
論理問題を簡単に理解しましょう。
ブール型変数
すべての高級言語には、ブール値と呼ばれるこのようなタイプの変数があります。この名前から、読者はそれが人の名前にちなんで名付けられたことがわかります。
乔治·布尔(George Boole,1815年11月-1864年,),英格兰数学家、哲学家。 乔治·布尔是一个皮匠的儿子,生于英格兰的林肯。由于家境贫寒,布尔不得不在协助养家的同时为自己能受教育而奋斗,不管怎么说,他成了19世纪最重要的数学家之一。尽管他考虑过以牧师为业,但最终还是决定从教,而且不久就开办了自己的学校。 在备课的时候,布尔不满意当时的数学课本,便决定阅读伟大数学家的论文。在阅读伟大的法国数学家拉格朗日的论文时,布尔有了变分法方面的新发现。变分法是数学分析的分支,它处理的是寻求优化某些参数的曲线和曲面。 1848年,布尔出版了《The Mathematical Analysis of Logic》,这是他对符号逻辑诸多贡献中的第一次。 1849年,他被任命位于爱尔兰科克的皇后学院(今科克大学或UCC)的数学教授。1854年,他出版了《The Laws of Thought》,这是他最著名的著作。在这本书中布尔介绍了现在以他的名字命名的布尔代数。布尔撰写了微分方程和差分方程的课本,这些课本在英国一直使用到19世纪末。 由于其在符号逻辑运算中的特殊贡献,很多计算机语言中将逻辑运算称为布尔运算,将其结果称为布尔值。
ブールの生涯を注意深く読んで、覚悟を決めてください。
ブール演算によって作られる論理を「ブール代数」といいます。このコンピュータでは、2 進数の 1 と 0 に対応する値は、True と False の 2 つだけであると規定されています。したがって、ブール代数とコンピュータは当然矛盾しません。
いわゆるブール型は、戻り結果が 1 (True) または 0 (False) になるデータ変数です。
Python (他の高級言語と同様、実際にはブール代数の演算規則です) には、ブール型変数間の演算を実装できる演算子が 3 つあります。
ブール演算
以下の表を見ると、この論理演算子を理解しやすくなります:
(変数 a が 10、変数 b が 20 であると仮定します)
运算符 | 描述 | 实例 |
---|---|---|
and | 布尔"与" - 如果x为False,x and y返回False,否则它返回y的计算值。 | (a and b) 返回 true。 |
or | 布尔"或" - 如果x是True,它返回True,否则它返回y的计算值。 | (a or b) 返回 true。 |
not | 布尔"非" - 如果x为True,返回False。如果x为False,它返回True。 | not(a and b) 返回 false。 |
と
and は「AND」演算と訳されますが、実はこの訳は意味のない理解を招きやすいのです。まずは正しい理解について話しましょう。 A と B、つまり、最初に A を計算し、A の値が True の場合は B を計算し、B が False の場合、A と B の最終結果は False になります。結果が True の場合、A と B の結果は True になります。A の値が False の場合、B は計算されず、A と B の結果は直接 False として返されます。
例:4>3 と 4<9、最初に 4>3 の値を確認すると、この値は True であり、次に 4<9 の値を確認すると、True となり、この式の最終結果は True になります。
>>> 4>3 and 4<9 True
<code>>>> 4>3 and 4<2 False</code>
<code>>>> 4<3 and 4<2 False</code>
または
or、「または」演算と訳されます。 A と B では、次のように機能します:
<code><pre class="php" style="box-sizing: border-box; border-bottom: 0px; border-left: 0px; padding-bottom: 10px; text-transform: none; background-color: rgb(245,245,245); text-indent: 0px; margin: 20px 0px; padding-left: 10px; letter-spacing: normal; padding-right: 10px; display: block; font: 0.92em/1.3 Menlo, Monaco, Consolas, 'Courier New', monospace; word-wrap: break-word; color: rgb(51,51,51); overflow: auto; word-break: break-all; border-top: 0px; border-right: 0px; word-spacing: 0px; padding-top: 10px; border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">if</span> A==<span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">True</span>: <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">return</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">True</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">else</span>: <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">if</span> B==<span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">True</span>: <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">return</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">True</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">else</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">if</span> B==<span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">False</span>: <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">return</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">False</span>
読者は上記の疑似コードを理解できますか?次に、各行にコメントを追加します。この擬似コードは自然な英語とほぼ同じです。
<code><pre class="php" style="box-sizing: border-box; border-bottom: 0px; border-left: 0px; padding-bottom: 10px; text-transform: none; background-color: rgb(245,245,245); text-indent: 0px; margin: 20px 0px; padding-left: 10px; letter-spacing: normal; padding-right: 10px; display: block; font: 0.92em/1.3 Menlo, Monaco, Consolas, 'Courier New', monospace; word-wrap: break-word; color: rgb(51,51,51); overflow: auto; word-break: break-all; border-top: 0px; border-right: 0px; word-spacing: 0px; padding-top: 10px; border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">if</span> A==<span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">True</span>: <span class="comment" style="box-sizing: border-box; font-style: italic; color: rgb(153,153,136)">#如果A的值是True</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">return</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">True</span> <span class="comment" style="box-sizing: border-box; font-style: italic; color: rgb(153,153,136)">#返回True,表达式最终结果是True</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">else</span>: <span class="comment" style="box-sizing: border-box; font-style: italic; color: rgb(153,153,136)">#否则,也就是A的值不是True</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">if</span> B==<span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">True</span>: <span class="comment" style="box-sizing: border-box; font-style: italic; color: rgb(153,153,136)">#看B的值,然后就返回B的值做为最终结果。</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">return</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">True</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">else</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">if</span> B==<span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">False</span>: <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">return</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">False</span>
<code><pre class="python" style="box-sizing: border-box; border-bottom: 0px; border-left: 0px; padding-bottom: 10px; text-transform: none; background-color: rgb(245,245,245); text-indent: 0px; margin: 20px 0px; padding-left: 10px; letter-spacing: normal; padding-right: 10px; display: block; font: 0.92em/1.3 Menlo, Monaco, Consolas, 'Courier New', monospace; word-wrap: break-word; color: rgb(51,51,51); overflow: auto; word-break: break-all; border-top: 0px; border-right: 0px; word-spacing: 0px; padding-top: 10px; border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span class="prompt" style="box-sizing: border-box; color: rgb(153,0,115)">>>> </span><span class="number" style="box-sizing: border-box; color: rgb(0,153,153)">4</span><<span class="number" style="box-sizing: border-box; color: rgb(0,153,153)">3</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">or</span> <span class="number" style="box-sizing: border-box; color: rgb(0,153,153)">4</span><<span class="number" style="box-sizing: border-box; color: rgb(0,153,153)">9</span> <span class="built_in" style="box-sizing: border-box; color: rgb(0,134,179)">True</span> <span class="prompt" style="box-sizing: border-box; color: rgb(153,0,115)">>>> </span><span class="number" style="box-sizing: border-box; color: rgb(0,153,153)">4</span><<span class="number" style="box-sizing: border-box; color: rgb(0,153,153)">3</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">or</span> <span class="number" style="box-sizing: border-box; color: rgb(0,153,153)">4</span>><span class="number" style="box-sizing: border-box; color: rgb(0,153,153)">9</span> <span class="built_in" style="box-sizing: border-box; color: rgb(0,134,179)">False</span> <span class="prompt" style="box-sizing: border-box; color: rgb(153,0,115)">>>> </span><span class="number" style="box-sizing: border-box; color: rgb(0,153,153)">4</span>><span class="number" style="box-sizing: border-box; color: rgb(0,153,153)">3</span> <span class="keyword" style="box-sizing: border-box; color: rgb(51,51,51); font-weight: bold">or</span> <span class="number" style="box-sizing: border-box; color: rgb(0,153,153)">4</span>><span class="number" style="box-sizing: border-box; color: rgb(0,153,153)">9</span> <span class="built_in" style="box-sizing: border-box; color: rgb(0,134,179)">True</span>
>>> not(4>3) False >>> not(4<3) True