内容
プログラミングを学ぶ過程で、実際に適用するのはそれほど簡単ではないプログラムを作成する必要があることがよくあります。 結局のところ、特定の条件下でのみ指示に従わなければならない場合があります。 これをプログラムに実装できるようにするために、すべての言語には制御ステートメントがあります。 彼らの助けを借りて、コード実行の流れを制御し、ループを作成したり、特定の条件が真の場合にのみ特定のアクションを実行したりできます。
今日は、特定の条件について現在の状況をチェックし、この情報に基づいて今後のアクションを決定する if ステートメントについて説明します。
制御ステートメントのタイプ
一般に、プログラムの流れを制御するステートメントは if だけではありません。 彼自身と同様に、より大きな一連のオペレーターの構成要素になることができます。
その実行プロセスを制御するループとステートメントもあります。 今日は、条件演算子とそれが参加できるチェーンについてのみ説明します。
プログラミングでは、分岐のようなものがあります。 まさにこれは、特定の条件が真の場合にのみ実行される一連のコマンドを意味します。 基準自体は異なる場合があります。
- 特定の値に対する変数の等価性。
- 特定のアクションを実行します。
- アプリケーションの状態 (折りたたまれているかどうか)。
スペクトルははるかに大きくなる可能性があります。 条件ステートメントにはいくつかのタイプがあります。
- 枝XNUMX本付き。 つまり、単一のチェックが実行され、その結果、特定のアクションが実行されます。
- 1 つ以上の分岐がある。 基準 2 が真の場合は、基準 3 をチェックします。真の場合は、XNUMX をチェックします。したがって、必要な数のチェックを実行します。
- いくつかの条件付き。 ここではすべてが簡単です。 インタープリターは、複数の条件またはそれらの XNUMX つをチェックします。
if文
if ステートメントの構造は、すべての言語で似ています。 ただし、Python では、その構文は他のすべての構文とは多少異なります。
条件の場合:
<重要なお知らせ 1>
<重要なお知らせ 2>
<не входящее выражение>
最初に、演算子自体が宣言され、その後、動作を開始する条件が記述されます。 条件は true または false のいずれかです。
この後に、コマンドを含むブロックが続きます。 満たすべき基準のすぐ後に続く場合、対応する一連のコマンドは if ブロックと呼ばれます。 その中で任意の数のコマンドを使用できます。
注意! すべての if ブロック コマンド内のインデントは同じサイズでなければなりません。 ブロック境界は、インデントによって決定されます。
言語ドキュメントによると、インデントは 4 つのスペースです。
このオペレーターはどのように機能しますか? インタープリターは、if ワードを検出すると、ユーザーが指定した基準に対して式をすぐにチェックします。 この場合、彼は指示を探してそれに従い始めます。 それ以外の場合、このブロックのすべてのコマンドはスキップされます。
条件の後のステートメントがインデントされていない場合、if ブロックとして扱われません。 私たちの状況では、この行は
この演算子がどのように機能するかの例のコード スニペットを次に示します。
number = int(input(“数字を入力してください: “))
数 > 10 の場合:
print(“数字が10より大きい”)
このプログラムは、ユーザーに数字の入力を求め、それが 10 より大きいかどうかを確認します。5 より大きい場合は、適切な情報を返します。 たとえば、ユーザーが数字の XNUMX を入力すると、プログラムは単純に終了し、それだけです。
しかし、100 という数字を指定すると、インタープリターはそれが XNUMX を超えていることを理解し、それを報告します。
注意! 私たちの場合、条件が偽の場合、命令の後にコマンドが与えられないため、プログラムは停止します。
上記のコードには XNUMX つのコマンドしかありません。 しかし、それらはもっとたくさんあります。 唯一の要件は、インデントすることです。
それでは、この一連のコマンドを分析してみましょう。
number = int(input(“数字を書いてください: “))
数 > 10 の場合:
print(“最初の行”)
print(“二行目”)
print(“XNUMX行目”)
print(“入力した数値に関係なく実行される行”)
print(“応募終了”)
値 2、5、10、15、50 を入力した場合の出力を推測してみてください。
ご覧のとおり、ユーザーが入力した数が 3,4,5 を超える場合は、XNUMX 行 + 「Run every time …」というテキストと XNUMX 行の「End」が出力され、XNUMX 未満の場合は XNUMX 行のみが出力されます。別のテキスト。 true の場合、XNUMX、XNUMX、XNUMX 行目のみが実行されます。 ただし、最後の XNUMX 行は、ユーザーが指定した数に関係なく書き込まれます。
コンソールでステートメントを直接使用すると、結果が異なります。 インタープリターは、検証基準を指定した後に Enter キーを押すと、すぐに複数行モードをオンにします。
次の一連のコマンドを記述したとします。
>>>
>>> n = 100
>>> n > 10 の場合:
...
その後、>>> が省略記号に置き換えられていることがわかります。 これは、複数行入力モードが有効であることを意味します。 簡単に言えば、Enter キーを押すと、命令の第 XNUMX 段階の入力に転送されます。
このブロックを終了するには、ブロックにもう XNUMX つの構造を追加する必要があります。 if.
>>>
>>> n = 100
>>> n > 10 の場合:
… print(«nv 10»)
...
条件が真でない場合、プログラムは終了します。 これは問題です。ユーザーは、このようなプログラムが障害のために終了したと認識する可能性があるからです。 そのため、ユーザーへのフィードバックが必要です。 このために、リンクが使用されます そうでなければ.
式演算子 そうでなければ
この演算子を使用すると、リンクを実装できます。式が特定のルールに一致する場合はこれらのアクションを実行し、そうでない場合は他のアクションを実行します。 つまり、プログラムの流れを XNUMX つに分けることができます。 構文は直感的です。
条件の場合:
# if ブロック
ステートメント1
ステートメント2
等々
その他:
# 他のブロック
ステートメント3
ステートメント4
等々:
この演算子がどのように機能するかを説明しましょう。 まず、標準ステートメントがスレッドで実行されます イチイ、 一致するかどうかを確認する 条件 "正しいか間違っているか"。 以降のアクションは、チェックの結果によって異なります。 true の場合、条件に続く命令シーケンス内の命令が直接実行されます。 イチイ、 それが偽の場合、 ほかに.
このようにして、エラーを処理できます。 たとえば、ユーザーは半径を入力する必要があります。 明らかに、プラス記号付きの数値か、NULL 値しか指定できません。 0 未満の場合は、正の数を入力するように求めるメッセージを発行する必要があります。
このタスクを実装するコードを次に示します。 しかし、ここで一つ間違いがあります。 どれか当ててみてください。
radius = int(input(“半径を入力してください: “))
半径 >= 0 の場合:
print(“円周 = “, 2 * 3.14 * 半径)
print(“エリア = “, 3.14 * 半径 ** 2)
その他:
print(“正の数を入力してください”)
インデントの不一致エラー。 If → Else それらなしで、または同じ数で配置する必要があります(ネストされているかどうかによって異なります)。
もう XNUMX つの使用例 (オペレーターの調整ですべてが正しくなる場合) を考えてみましょう。これは、パスワードをチェックするアプリケーション要素です。
password = input(“パスワードを入力してください: “)
パスワード == «ssh» の場合:
print(「ようこそ」)
その他:
print(“アクセス拒否”)
パスワードが sshh の場合、この命令はその人をさらにスキップします。 他の文字と数字の組み合わせの場合、「アクセスが拒否されました」というメッセージが表示されます。
ステートメント式 if-elif-else
いくつかの条件が真でない場合にのみ、ブロック内のステートメントが実行されます。 ほかに. この式は次のように機能します。
条件_1の場合:
# if ブロック
ステートメント
ステートメント
より多くの声明
elif 条件_2:
# 最初の elif ブロック
ステートメント
ステートメント
より多くの声明
elif 条件_3:
# XNUMX 番目の elif ブロック
ステートメント
ステートメント
より多くの声明
...
ほかに
ステートメント
ステートメント
より多くの声明
追加条件はいくつでも指定できます.
ネストされたステートメント
複数の条件を実装する別の方法は、if ブロックに追加の条件チェックを挿入することです。
演算子 if 別の条件ブロック内
gre_score = int(input(“現在の与信限度額を入力してください”))
per_grad = int(input(“信用格付けを入力してください: “))
per_grad > 70 の場合:
# 外側の if ブロック
gre_score > 150 の場合:
# 内部 if ブロック
print(“おめでとうございます。融資を受けました”)
その他:
print(“申し訳ありませんが、あなたはローンの対象ではありません”)
このプログラムは、信用格付けチェックを実行します。 70 未満の場合、プログラムは、ユーザーがクレジットを受ける資格がないことを報告します。 より大きい場合は、現在の与信限度額が 150 より大きいかどうかを確認するために XNUMX 番目のチェックが実行されます。そうである場合は、ローンが発行されたことを示すメッセージが表示されます。
両方の値が false の場合、ユーザーがローンを取得する可能性がないというメッセージが表示されます。
では、そのプログラムを少し作り直してみましょう。
gre_score = int(input(“現在の制限を入力してください: “))
per_grad = int(input(“クレジットスコアを入力してください: “))
per_grad > 70 の場合:
gre_score > 150 の場合:
print(“おめでとうございます。融資を受けました”)
その他:
print(“あなたの与信限度額は低いです”)
その他:
print(“申し訳ありませんが、クレジットの対象外です”)
コード自体は非常に似ていますが、ネストされています if また、条件が false であることが判明した場合のアルゴリズムも提供します。 つまり、カードの限度額が不足しているが、信用履歴が良好な場合、「信用度が低い」というメッセージが表示されます。
条件内の if-else ステートメント ほかに
テストの点数に基づいて学生の成績を決定する別のプログラムを作成してみましょう。
score = int(input(“スコアを入力してください: “))
スコア >= 90 の場合:
print(「よし!君の成績はAだ」)
その他:
スコア >= 80 の場合:
print(「よし!君の成績はBだ」)
その他:
スコア >= 70 の場合:
print(“よし!君の成績はCだ”)
その他:
スコア >= 60 の場合:
print(“あなたの成績はDです。復習する価値があります。”)
その他:
print(“あなたは試験に落ちました”)
アプリケーションは、最初にスコアが 90 以上かどうかを確認します。XNUMX 以上の場合は、A グレードを返します。 この条件が false の場合、後続のチェックが実行されます。 一見すると、アルゴリズムはほとんど同じであることがわかります。 内部をチェックする代わりに ほかに 組み合わせて使ったほうがいい if-elif-else.
だからオペレーターは if 非常に重要な機能を実行します。特定のコードが必要な場合にのみ実行されるようにします。 最も単純なアルゴリズムでさえ、「左に行けば見つけることができ、右に行けばこれを行う必要がある」などのフォークが必要になるため、それなしでプログラミングを想像することは不可能です。