「手をつないでPythonを学ぶ」15-判断の声明

前回の記事手をつないでPythonを学ぶ」14-インタラクティブ入力では、input()関数を使用してコンピューターでインタラクティブ入力を実現する方法と、PyCharmを使用してプログラムを作成および実行する方法について学習しました。

また、前回の記事の最後に、プロンプトの内容が表示された後、ユーザーが入力する行を変更する方法について、皆さんに質問を残しました。答えは非常に簡単ですか?プロンプトコンテンツ文字列の最後に改行文字「\ n」を追加するだけです。

この記事から始めて、過去に学んだ知識を制御フローステートメントの学習プロセスに適用し、独自の小さなプログラムをいくつか作成して、誰もが真にプログラマーの仲間入りを行えるようにします。

本日紹介する制御フローステートメントは、判断ステートメントifです。これは、条件ステートメントとも呼ばれ、同じ意味を持ちます。

典型的なifステートメントの構造は次のとおりです。

if 判断条件:
    执行语句1
else:
    执行语句2

この規則の文法構造は言うまでもなく、その意味はよく理解されており、自然言語に翻訳されています。

判定条件が真の場合はステートメント1を実行し、そうでない場合(判定条件が偽の場合)はステートメント2を実行します。

フローチャートを使用して表現すると、より明確になります。

 

その中で、キーワードifは必要であり、elseは省略できます。つまり、判定条件が真の場合は文が実行され、判定条件が偽の場合は何も実行されない。

if文に関しては、以下の知識ポイントを導入する必要があります。

1.判断条件:

出力結果がブール値型(TrueまたはFalse)の演算である限り、判定条件として使用できます。たとえば、以前に学習した比較操作(>、> =、<、<=、==、!=)、メンバー操作(in、not in)、ID操作(is、not is)などです。最も一般的に使用されるのは、比較操作です。

例を示すときはJupyterNotebookのインターフェースがより使いやすいので、知識ポイントの学習プロセスの最初に例を示すためにJupyter Notebookを使用し、最終的にプログラムを作成するときにPyCharmを使用します。(このアプローチは、将来の記事でも採用される予定です。)

In [1]: if 2 > 1:   # 比较运算
            print("判断条件为真。")
        else:
            print("判断条件为假。")
Out[1]: 判断条件为真。
​
In [2]: if 1 in [2, 3, 4]:   # 成员运算
            print("判断条件为真。")
        else:
            print("判断条件为假。")
Out[2]: 判断条件为假。
​
In [3]: a = 257
        b = 257
        if a is b:   # 身份运算,为什么判断条件为假?请参考《手把手陪您学Python》13——运算
            print("判断条件为真。")
        else:
            print("判断条件为假。")
Out[3]: 判断条件为假。

複数の条件を同時に判断する必要がある場合は、論理演算も使用する必要があります(and、or、not)。

In [4]: if 2 > 1 and 3 < 2:   # 逻辑运算and
            print("判断条件为真。")
        else:
            print("判断条件为假。")
Out[4]: 判断条件为假。
​
In [5]: if 2 > 1 or 3 < 2:   # 逻辑运算or
            print("判断条件为真。")
        else:
            print("判断条件为假。")
Out[5]: 判断条件为真。
​
In [6]: if not 2 > 1:   # 逻辑运算not
            print("判断条件为真。")
        else:
            print("判断条件为假。")
Out[6]: 判断条件为假。
​
In [7]: if not 2 > 1 and 3 > 2 or (4 > 3 and 3 < 5):   # 混合逻辑运算
            print("判断条件为真。")
        else:
            print("判断条件为假。")
Out[7]: 判断条件为真。

さらに、前述のように、0はFalseを表すことができ、ゼロ以外の数値はTrueを表すことができるため、理論的には、数値を出力値として使用する演算を判断条件として使用できます。そのような判断条件には意味がないというだけで、そのようなプログラムを書く人は誰もいません。代わりに、比較関数a == 0または!= 0を判断条件として使用できます。

In [8]: if 2 * 3:   # 数字运算,只要结果不为零就为真,一般不这样设置判断条件
            print("判断条件为真。")
        else:
            print("判断条件为假。")
Out[8]: 判断条件为真。
​
In [9]: a = 2 * 3
        if a != 0:   # 使用a == 0或者a != 0,作为判断条件
            print("判断条件为真。")
        else:
            print("判断条件为假。")
Out[9]: 判断条件为真。

2.多条件判断

前に紹介したif ... else ..は典型的なifステートメント構造ですが、一般的に使用されるifステートメント構造にはelifなどの判定条件識別子も含まれています。さらに、複数のエリフを使用することにより、複数の条件判断を実現することができます。文の構造は次のとおりです。

if 判断条件1:
    执行语句1
elif 判断条件2:
    执行语句2
elif 判断条件3:
    执行语句3
else:
    执行语句4

自然言語に翻訳されたものは次のとおりです。

判定条件1が真の場合はステートメント1を実行し、そうでない場合はステートメント2を実行します。判定条件2が真の場合はステートメント2を実行し、そうでない場合はステートメント3を実行します。判定条件3が真の場合はステートメント3を実行します。それ以外の場合はステートメント4は実行されました。

複数の条件判定を行う場合は、それ以外も省略できます。通常のifステートメント構造であろうと、この複数条件の判断であろうと、elseは「その他」の状況を表すからです。「その他」の状況でステートメントを実行したくない場合は、省略できます。

 

 

マルチコンディションジャッジメントの適用シナリオはたくさんありますが、最後にやりたいプロジェクトはマルチコンディションジャッジメントの例です。それでは、簡単な例を使って説明しましょう。

In [10]: a = 3.5
         if a < 0:
             print("a为负数。")
         elif a % 2 == 0:
             print("a为偶数。")
         elif a % 2 == 1:
             print("a为奇数。")
         else:
             print("a不是正整数。")
Out[10]: a不是正整数。

3.ステートメントのネスト

elifを使用して複数条件の判断を実装することに加えて、複数のifステートメントをネストして複数条件の判断を実装することもできます。ステートメントネスティングと呼ばれますが、高度な技術として理解する必要はありませんが、特定の判断条件での実行ステートメント自体がifステートメント構造です。このことを理解すれば、入れ子の作り方を考えなくても、将来誰もが応募できるので便利です。

if 判断条件1:
    执行语句1
elif 判断条件2:
    执行语句2
        if 判断条件2-1:
            执行语句2-1
        elif 判断条件2-2:
            执行语句2-2
        else:
            执行语句2-3
else:
    执行语句3

上記のステートメントの構造は少し複雑に見えますが、ifステートメントの基本構造から派生しています。自然言語に翻訳してみることができます。問題がなければ、if文の意味を十分に理解していることを意味します。

最後に、上記の例をネストして表現しましょう。違いに注意してください。

In [11]: a = 3.5
         if a < 0:
             print("a为负数")
         elif a > 0:
             if a % 2 == 0:
                 print("a为偶数。")
             elif a % 2 == 1:
                 print("a为奇数。")
             else:
                 print("a不是正整数")
         else:
             print("a为0。")
Out[11]: a不是正整数

4.構文形式:

ifステートメントの意味をマスターしたら、残りはフォーマット要件です。

以前に学んだのは1行のコードだったので、フォーマット要件はそれほど多くありませんでした。ただし、制御フローステートメントに関しては異なります。厳密な記号、形式、およびインデントの要件があります。そうでない場合、エラーが報告されます。しかし、言うのは非常に簡単です。2つの点に注意してください。

1つは、各キーワード文の後に「:」(英語のコロンに注意)が必要です。これは、if、elif、およびelseが配置されている文の行です。

次に、各コロンの後の実行ステートメントをインデントして、次のレベルのステートメントを表す必要があります。通常、Tabキーを使用して直接インデントできます。JupyterNotebookやPyCharmなどのソフトウェアも「:」と入力し、Enterキーを押して自動的にインデントを完了します。ステートメントのネストなどの場合、マルチレベルのステートメント構造がある場合は、前のレベルのインデント位置で再度インデントする必要があり、プログラムは通常、自動的に実現されます。

このフォーマット要件と表示モードは、まさにPython言語の使いやすさを具現化したものです。文の階層構造はインデントで一目でわかり、とても読みやすいです。実装方法も非常にシンプルで、ワンクリックで実行できます。

5.三項演算

では、物品13-操作「の手であなたの手を持つ学習のPython」、我々は三項演算を述べた。if文は、その時点で導入されていなかったので、コンテンツのこの部分は省略しました。これで、上記の基礎により、三項演算を理解することができます。

三項演算は、実際には単純化されたif ... else ...ステートメント構造です。ステートメント全体が同じ行に記述されている限り、セマンティクスに違いはなく、「:」や「:」などのフォーマット要件もありません。インデント。注意すべき唯一のことは、三項演算は演算であり、その結果は変数に割り当てられ、この値はif ... else ...ステートメント構造とその中の式によって計算されるということです。

三項演算は、次の構造で表すことができます。

a =式1if判定条件else式2

自然言語に翻訳されたものは次のとおりです。

判定条件が真の場合、aの値は式1の結果に等しく、そうでない場合、aの値は式2の結果に等しくなります。

In [12]: a = 2
         b = "奇数" if a % 2 == 1 else "偶数"   # 这里的表达式是字符串
         print("a是{}。".format(b))
Out[12]: a是偶数。
​
In [13]: a = 2
         b = a * 2 if a < 2 == 1 else a ** 2   # 这里的表达式是算数运算
         print(b)
Out[13]: 4

上記はifの判断文に関する知識のポイントであり、以下の例を、ifの判断文と以前に学んだ知識を使用して記述します。これで、最初にJupyter Notebookを閉じることができます。次に、PyCharmを使用してこのプログラムを作成します。

今日、私たちが書くつもりの例は、私たちがよく知っている「じゃんけん」ゲームです。ゲームのプロセス全体は、前の記事で説明した完全な情報フロー実行プロセスであり、最初にインタラクティブな入力、次にプログラム処理、最後に結果を出力します。

入力部分は、プログラム、岩、はさみ、または布のユーザーが入力したパンチの内容です。

プログラムの処理には2つの部分があります。1つはコンピューターがランダムにパンチすること、もう1つはコンピューターがゲームのルールに従って結果を判断することです。

出力部分はゲームの結果です。

以下に、プログラムテキスト全体とPyCharmスクリーンショットを示します。ここでは、プログラムステートメントの説明がコメントを使用して説明されています。

In [14]: import random   # 因为要使用随机函数,需要先导入随机函数库
 
         # 交互式输入过程,使用input()函数
         user = input("请输入您要出的拳(石头、剪刀、布):")
         
         # 使用choice()函数,实现在序列中随机选取一个元素,做为电脑出的拳
         computer = random.choice(['石头', '剪刀', '布'])
         
         # 以下是程序处理过程,直接按照游戏规则进行判断,根据判断结果进行输出
         
         # 把所有游戏者赢的情况列举出来,任何一种情况出现,就输出游戏者胜利
         if (user == '石头' and computer == '剪刀') or (user == '剪刀' and computer == '布') or (user == '布' and computer == '石头'):
             print("您出的是:{},电脑出的是:{}。恭喜,您赢了!".format(user, computer))
             
         # 打平的情况最容易描述,所以作为一个判断条件
         elif user == computer:
             print("您出的是:{},电脑出的是:{}。打平了!".format(user, computer))
             
         # 其它情况就是游戏者输的情况,因为描述比较复杂,放在其它情况里,就不用写很复杂的判断条件了
         else:
             print("您出的是:{},电脑出的是:{}。很遗憾,您输了!".format(user, computer))
             
Out[14]: 请输入您要出的拳(石头、剪刀、布):布
​
Out[15]: 您出的是:布,电脑出的是:石头。恭喜,您赢了!

上のスクリーンショットからわかるように、プログラムの上部に、プログラムの基本情報を説明するコメント(三重引用符 "" "を使用)があります。同じことを行うことをお勧めします。最初に、記録できます。プログラム。内容、将来の忘却を避けるために。次に、このレコードを通して、Pythonの学習コースを確認できます。一部のプログラムは、学習が進むにつれて、より適切かつ簡潔に記述される場合があります。これらは、私たちのプロセスです。継続的な成長。

さらに、プログラムの20行目の終わりに「\」があります。この記号は、入力を続行するためにコードの長い行を折り返すために使用される識別子です。「\」を記述しないと、プログラムによって新しいコード行と見なされます。フォーマット要件とプログラムコンテンツの両方にエラーがある可能性があります。

PyCharmがコードを入力する過程で、多くの便利なヒントがあります。たとえば、使用されている変数が入力され、フォーマットエラーまたは文法エラーには対応する黄色または赤の波線が表示されます。マウスをプロンプトに移動すると、関連する提案やプロンプトの内容を確認できます。PyCharmは強力であるだけでなく、多くの点で優れているため、このソフトウェアの使用をお勧めします。

この時点で、最初の実際のPythonプログラムが完了しました。さらにいくつかプレイして、学習結果を楽しむことができます。

しかし、ゲームの過程で、誰もが不便を感じましたか?たとえば、再生するには毎回プログラムを実行する必要があり、入力プロセスでエラーが発生すると、エラーと割り込みが報告されます。

これらは確かに私たちのバージョンの欠陥です。ただし、現時点ではV1.0バージョンのみであり、以下の調査では、このバージョンの欠点を改善するだけでなく、このゲームの機能をさらに充実させていきます。次の記事で紹介するwhile()関数を使用すると、毎回手動で実行しなくてもゲームの継続的な実行を実現できますので、ご期待ください。

 

 


この記事を読んでくれてありがとう!ご不明な点がございましたら、メッセージを残してご相談ください^ _ ^

以下のQRコードをスキャンすることを歓迎します。「YesuoPython」公式アカウントをフォローするか、「Learning Python with You Hand in Hand」シリーズの他の記事を読むか、以下のリンクをクリックして直接アクセスしてください。

「手をつないでPythonを学ぶ」1-なぜPythonを学ぶのか?

「手をつないでPythonを学ぶ」2-Pythonのインストール

「手をつないでPythonを学ぶ」3-PyCharmのインストールと構成

「手をつないでPythonを学ぶ」4-HelloWorld!

「手をつないでPythonを学ぶ」5-JupyterNotebook

「手をつないでPythonを学ぶ」6文字の識別

「手をつないでPythonを学ぶ」7-文字列のインデックス

「手をつないでPythonを学ぶ」8弦スライシング

「手をつないでPythonを学ぶ」9弦操作

「手をつないでPythonを学ぶ」10文字列関数

「手をつないでPythonを学ぶ」11-文字列のフォーマットされた出力

「手をつないでPythonを学ぶ」12-数字

「手をつないでPythonを学ぶ」13-操作

「手をつないでPythonを学ぶ」14-インタラクティブな入力

ファンの方へ:「Pythonも言った」パブリックアカウントをフォローし、「Hand 15」と返信すると、この記事で使用されているサンプル文を無料でダウンロードできます。

Pythonについても話します-Python愛好家のための学習と共有の領域

 

おすすめ

転載: blog.csdn.net/mnpy2019/article/details/98849910