第 3 章: ブランチ構造

第 3 章: ブランチ構造

以前の記事を参照してください:
第 1 章: 初期の Python
第 2 章: 言語要素
またはコラム「Python チュートリアル」に移動して参照してください。


リソースディレクトリ: コード (3)
記事リソースのダウンロード: (1-15 章)
リンク: https://pan.baidu.com/s/1Mh1knjT4Wwt__7A9eqHmng?pwd=t2j3
抽出コード: t2j3

アプリケーションシナリオ

これまでに記述した Python コードは 1 つずつ順番に実行されますが、このコード構造は通常シーケンシャル構造と呼ばれます。しかし、シーケンス構造だけですべての問題を解決できるわけではなく、たとえば、ゲームを設計する場合、ゲームの最初のレベルのクリア条件はプレイヤーが 1000 ポイントを獲得することですが、2 レベル目ではプレイヤーに「ゲームオーバー」と伝えることができます。 , ここでは 2 つの分岐が生成され、これら 2 つの分岐のうち 1 つだけが実行されます。同様のシナリオが多数あり、この構造を「分岐構造」または「選択構造」と呼びます。皆さん、少し時間をいただければ、そのような例が少なくとも 5 つ思いつくはずですので、試してみてください。

if ステートメントの使用

Python では、 および キーワードを使用してifブランチelif構造elseを構築できます。キーワードと呼ばれるものは、 やifなどの特別な意味を持つ単語で、else分岐構造を構築するために特別に使用されるキーワードであり、変数名として使用することは当然できません (実際、他の識別子として使用することは許可されていません)。次の例は、ブランチ構造を構築する方法を示しています。

"""
用户身份验证

Version: 0.1
Author: 骆昊
"""
username = input('请输入用户名: ')
password = input('请输入口令: ')
# 用户名是admin且密码是123456则身份验证成功否则身份验证失败
if username == 'admin' and password == '123456':
    print('身份验证成功!')
else:
    print('身份验证失败!')

C/C++、Java、その他の言語とは異なり、Python はコード ブロックの構築に中かっこを使用しませんが、コードの階層構造を表すためにifインデントを使用します。条件が true の場合、複数のステートメントを実行する必要があります。複数のステートメントを同じインデントで保持する限り。つまり、連続するコードが同じインデントを維持していれば、それらは同じコード ブロックに属し、実行全体と同等になります。インデントには任意の数のスペースを使用できますが、通常は 4 つのスペースが使用されるため、タブ キーを使用しないかコード編集ツールでタブ キーを自動的に 4 つのスペースに変更するように設定することをお勧めします

if...elif...else...もちろん、より多くの分岐を構築したい場合は、構造体またはネストされた構造体を使用できますif...else...。次のコードは、複数分岐構造体を使用してセグメント化された関数評価を実装する方法を示しています。

"""
分段函数求值

        3x - 5  (x > 1)
f(x) =  x + 2   (-1 <= x <= 1)
        5x + 3  (x < -1)

Version: 0.1
Author: 骆昊
"""

x = float(input('x = '))
if x > 1:
    y = 3 * x - 5
elif x >= -1:
    y = x + 2
else:
    y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))

もちろん、実際の開発のニーズに応じて、分岐構造を入れ子にすることも可能で、たとえば、レベルを通過するかどうかを判断した後、獲得した宝物や小道具(照明など)の数に応じてレベルが与えられます。星が 2 つまたは 3 つあります) 次に、if内部に新しいブランチ構造を構築する必要があります。同様に、内部に新しいブランチを構築することもelifできelse、これをネストされたブランチ構造と呼びます。つまり、上記のコードも作成できます。次のように。

"""
分段函数求值
		3x - 5	(x > 1)
f(x) =	x + 2	(-1 <= x <= 1)
		5x + 3	(x < -1)

Version: 0.1
Author: 骆昊
"""

x = float(input('x = '))
if x > 1:
    y = 3 * x - 5
else:
    if x >= -1:
        y = x + 2
    else:
        y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))

説明:これら 2 つの書き方のどちらが優れているかは、自分で感じてください。先ほどの Python の Zen には「ネストよりもフラットの方が優れています。」という文がありますが、可読性を考慮するとフラットな構造が使える場合はネストを使用しないでください。

練習

演習 1: インペリアル単位のインチをメートル単位のセンチメートルに交換します。

参考回答:

"""
英制单位英寸和公制单位厘米互换

Version: 0.1
Author: 骆昊
"""
value = float(input('请输入长度: '))
unit = input('请输入单位: ')
if unit == 'in' or unit == '英寸':
    print('%f英寸 = %f厘米' % (value, value * 2.54))
elif unit == 'cm' or unit == '厘米':
    print('%f厘米 = %f英寸' % (value, value / 2.54))
else:
    print('请输入有效的单位')

演習 2: パーセンタイル評点を評点に変換します。

要件:入力スコアが90点以上(90点を含む)の場合、出力A;80点~90点(90点を除く) 出力B;70点~80点(80点を除く) 出力C;60点~70点点数(70点を除く)はD出力、60点以下はE出力。

参考回答:

"""
百分制成绩转换为等级制成绩

Version: 0.1
Author: 骆昊
"""
score = float(input('请输入成绩: '))
if score >= 90:
    grade = 'A'
elif score >= 80:
    grade = 'B'
elif score >= 70:
    grade = 'C'
elif score >= 60:
    grade = 'D'
else:
    grade = 'E'
print('对应的等级是:', grade)

演習 3: 3 辺の長さを入力し、三角形が形成できる場合の周囲長と面積を計算します。

参考回答:

"""
判断输入的边长能否构成三角形,如果能则计算出三角形的周长和面积

Version: 0.1
Author: 骆昊
"""
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
if a + b > c and a + c > b and b + c > a:
    print('周长: %f' % (a + b + c))
    p = (a + b + c) / 2
    area = (p * (p - a) * (p - b) * (p - c)) ** 0.5
    print('面积: %f' % (area))
else:
    print('不能构成三角形')

説明:辺の長さによって三角形の面積を計算するために上記で使用した公式は、ヘロンの公式と呼ばれます。

おすすめ

転載: blog.csdn.net/xyx2023/article/details/129628769