Python言語学習4日目_制御構造:条件文とループ

I.はじめに

1. 制御構造の簡単な紹介

制御構造は、プログラムの実行フローを制御するプログラミング言語のステートメントです。それらは 2 つの主なカテゴリに分類されます。

  1. 条件文:
    • ifステートメント: 条件に基づいてコードのブロックを実行します。
    • elifステートメント: 前の条件が当てはまらない場合は、この条件を試してください。
    • elseステートメント: このコード ブロックは、すべての条件が満たされない場合に実行されます。
  2. ループ文:
    • forループ: シーケンス内の各要素を繰り返し処理します。
    • whileループ: 条件が true である限り、コードのブロックを繰り返します。

2. プログラミングにおける制御構造の重要性

プログラミングにおける制御構造の重要性は、プログラムがさまざまな条件に基づいて、または繰り返してコードの特定のブロックを実行できるようにすることです。これにより、プログラムは意思決定を行い、反復的なタスクを実行し、複雑なプロセスを管理してさまざまな機能やアルゴリズムを実装できるようになります。

  1. 意思決定機能: 条件文 (if、elif、else など) を通じて、プログラムはさまざまな条件に応じてさまざまなコード パスを実行でき、それによって意思決定機能を実現します。
  2. 繰り返し実行: ループ ステートメント (for、while など) を使用すると、プログラムでコード ブロックを繰り返し実行できます。これは、繰り返しタスクの処理、データ構造の走査、その他のシナリオに不可欠です。
  3. プロセス管理: 制御構造はプログラムの実行プロセスを効果的に管理できるため、プログラムが論理的な順序で実行され、コードの可読性と保守性が向上します。
  4. アルゴリズムの実装: 制御構造は、並べ替え、検索、動的プログラミングなどのアルゴリズムを条件付きステートメントやループ ステートメントのサポートと切り離すことができません。
  5. 柔軟性とスケーラビリティ: 制御構造を合理的に使用すると、プログラムの柔軟性とスケーラビリティが向上し、さまざまな入力やシナリオに適応できるようになり、プログラムの多用途性が向上します。

要約すると、制御構造はプログラミング言語の中核コンポーネントであり、機能が豊富で論理的に複雑なプログラムを作成するには制御構造を習得することが重要です。

2. 条件文

1. if文の基本的な使い方

Python では、if条件に基づいてコード ブロックを実行するためにステートメントが使用されます。ifステートメントの基本的な使用法は次のとおりです。

  1. 単一の条件ifステートメント:

    if condition:
        # 如果条件为真,则执行这里的代码
        print("条件为真,执行此代码块。")
    
  2. 複数の条件if:

    if condition1:
        # 如果条件1为真,则执行这里的代码
        print("条件1为真,执行此代码块。")
    elif condition2:
        # 如果条件1不为真,但条件2为真,则执行这里的代码
        print("条件1不为真,条件2为真,执行此代码块。")
    else:
        # 如果条件1和条件2都不为真,则执行这里的代码
        print("条件1和条件2都不为真,执行此代码块。")
    
  3. ifステートメント内のコード ブロック:

    • ifステートメントの後のコロン ( ):は、コード ブロックの始まりを示します。
    • コード ブロックはインデントする必要があります (通常は 4 つのスペースまたは 1 つのタブ)。
    • 正しいインデントは、Python で構造を制御するための鍵です。
  4. 予防

    • 条件式は、特に複数の条件がある場合には括弧で囲む必要があります。
    • ifステートメントの後にコロンを追加することを忘れないでください。
    • コード ブロックが正しくインデントされていることを確認してください。
  5. age = 20
    if age >= 18:
        print("您已成年。")
    else:
        print("您还未成年。")
    

この例では、age変数が 18 以上の場合は「あなたは成人です。」を出力し、それ以外の場合は「あなたはまだ未成年ではありません。」を出力します。ifステートメントの基本的な目的は、条件評価の結果に基づいてコードの特定のブロックを実行するかどうかを決定することであることに注意してください。

2.else句の使用

Python では、条件が満たされない場合に代替の実行パスを提供するために、else句はifステートメントと一緒に使用されることがよくあります。句の基本的な使用法はif次のとおりです。else

  1. 単純なステートメントifの後のelse:

    if condition:
        # 如果条件为真,则执行这里的代码
    else:
        # 如果条件不为真,则执行这里的代码
        print("条件不为真,执行此代码块。")
    
  2. elif条項とelse条項:

    if condition1:
        # 如果条件1为真,则执行这里的代码
    elif condition2:
        # 如果条件1不为真,但条件2为真,则执行这里的代码
    else:
        # 如果条件1和条件2都不为真,则执行这里的代码
        print("条件1和条件2都不为真,执行此代码块。")
    
  3. else句 ANDforまたはwhileループ:

    for item in collection:
        # 循环体代码
    else:
        # 当循环正常完成时执行,即循环体未被`break`语句打断时执行
        print("循环体已全部执行完毕。")
    

句を使用するときはelse、次の点に注意する必要があります。

  • else句はifステートメントと一緒に、またはステートメントの後に使用する必要がありますif
  • elseコード構造を明確に保つために、句内のコード ブロックは同じインデント レベルにする必要があります。
  • elif内では、それぞれの句elifと対応する句のelseインデント レベルが同じである必要があります。
  • fororループではwhileelse句はループの通常の終了時、つまりbreakループの本体がステートメントによって中断されていないときに実行されます。例えば:
x = 10
if x > 0:
    print("x 是正数")
else:
    print("x 不是正数")

この例では、x0 より大きい場合は「x は正の数です」と表示され、0 より大きい場合は「x は正の数ではありません」と表示されます。

3. elif 節の使用

Python では、elif(else if の略) 句を使用して、ifステートメントの条件が満たされない場合に追加の条件チェックを提供します。elif句は、複数条件分岐ロジックを実装するためによく使用されます。elif句の基本的な使用法は次のとおりです。

  1. if-elif-else構造

    if condition1:
        # 如果条件1为真,则执行这里的代码
    elif condition2:
        # 如果条件1不为真,但条件2为真,则执行这里的代码
    else:
        # 如果条件1和条件2都不为真,则执行这里的代码
        print("条件1和条件2都不为真,执行此代码块。")
    
  2. elif句の順序:

    • elif句は、可能性が最も高いものから可能性が最も低いものの順に並べる必要があります。
    • これにより、プログラムは条件を満たす句をより速く見つけてelif実行できるようになります。
  3. 予防

    • それぞれelifと対応するものはelse同じインデント レベルを持つ必要があります。
    • 最初のif条件が満たされない場合、Python は最初のelif条件をチェックし、満たされている場合は対応するコード ブロックを実行します。
    • ifすべてのANDelif条件が満たされない場合は、else句 (存在する場合) が実行されます。
  4. grade = 'B'
    if grade == 'A':
        print("优秀!")
    elif grade == 'B':
        print("良好。")
    elif grade == 'C':
        print("及格。")
    else:
        print("加油,再努力!")
    

この例では、grade変数の値に応じて、プログラムは異なるメッセージを出力します。 「A」の場合はgrade「Excellent!」を出力し、「B」の場合は「Good」を出力し、どちらでもない場合は「頑張ってください」を出力します。 「!」。elif句は、複雑な条件判断を実装するための一般的な方法です。句を使用すると、コードがより明確になり、理解しやすくなります。

4. ネストされた if ステートメント

ネストされたステートメントとは、ステートメント ブロック内で別のステートメントを使用することifを指します。ネストされたステートメントを使用すると、複数の条件に基づいて異なるコード パスを実行できます。ネストされたステートメントの基本的な使用法は次のとおりです。ifififif

  1. ネストされたifステートメント:
    x = 10
    if x > 0:
        print("x 是正数")
        if x < 100:
            print("x 是一个小于100的正数")
    else:
        print("x 不是正数")
    

この例では、まずx0 より大きいかどうかを確認します。そうである場合は、 x100 未満かどうかをさらに確認します。 2.注意事項:

  • 内側のステートメントが外側のステートメントと同じインデント レベルifであることを確認してください。if
  • 無限ループを避けるために、ネストされた各ifステートメントには明示的な条件が必要です。
  1. age = 21
    if age >= 18:
        print("您已成年。")
        if age >= 21:
            print("您已超过法定饮酒年龄。")
        else:
            print("您还未达到法定饮酒年龄。")
    else:
        print("您还未成年。")
    

この例では、最初にage18 以上かどうかを確認し、18 であればさらに 21 以上かどうかを確認します。ネストされたifステートメントは、複雑なロジックを扱う場合に非常に便利ですが、過度に使用したり誤って使用したりすると、コードの理解や保守が困難になる可能性があります。したがって、ネストされたifステートメントを作成するときは、ロジックが明確であることを確認し、できるだけ簡潔に保つ必要があります。

3. 論理演算子

1. andorおよびnot演算子の使用

Python では、andおよび演算子ornot論理演算に使用され、複数の条件を組み合わせたり、単一の条件を否定したりするために使用されます。

andオペレーター

  • 両方の条件が true の場合、and演算子の結果は true になります。
  • それ以外の場合、結果は false になります。
condition1 = True
condition2 = False
result = condition1 and condition2
print(result)  # 输出:False

orオペレーター

  • 2 つの条件のうち少なくとも 1 つが true の場合、or演算子の結果は true になります。
  • それ以外の場合、結果は false になります。
condition1 = True
condition2 = False
result = condition1 or condition2
print(result)  # 输出:True

notオペレーター

  • 1 つの条件を否定します。
  • 条件が true の場合、not演算子の結果は false になります。
  • それ以外の場合、結果は true になります。
condition = True
result = not condition
print(result)  # 输出:False

予防

  • 論理演算子の両側のオペランドは通常、ブール値です。
  • 論理演算子の演算順序は左から右です。
  • 論理演算子は、任意のブール式で使用できます。

# 组合使用 and、or 和 not 运算符
x = 10
y = 20
result = (x > 5) and (y > 10)
print(result)  # 输出:False
result = (x > 5) or (y > 10)
print(result)  # 输出:True
result = not (x == y)
print(result)  # 输出:True

これらの演算子は、条件ステートメントを作成するときに非常に便利で、複雑な論理的判断を構築するのに役立ちます。論理演算子を適切に使用すると、コードの明瞭さと読みやすさが向上します。

2. 条件文での適用

論理演算子は条件ステートメントで広く使用されており、複数の条件を組み合わせてより複雑な決定を行うことができます。 Python では、主な論理演算子にはandor、 が含まれますnot

andオペレーター

  • and演算子は、2 つ以上の条件が同時に真であるかどうかを確認するために使用されます。
  • ifステートメント内で、andを使用して複数の条件を組み合わせることができます。
x = 10
y = 20
if x > 5 and y > 10:
    print("x 和 y 都大于它们的阈值。")

この例では、コード ブロックがx5 より大きく、y10 より大きい場合にのみ実行されます。

orオペレーター

  • or演算子は、2 つ以上の条件のうち少なくとも 1 つが true であるかどうかを確認するために使用されます。
  • ifステートメント内で、orを使用して代替条件を指定できます。
x = 10
y = 5
if x > 5 or y > 10:
    print("x 或 y 至少有一个大于它们的阈值。")

この例では、x5 より大きいかy10 より大きい場合、コード ブロックが実行されます。

notオペレーター

  • not演算子は、単一の条件を否定するために使用されます。
  • ifステートメント内で、not条件のロジックを逆にするために使用できます。
x = 5
if not (x > 10):
    print("x 不大于10。")

この例では、not演算子がx10 より大きくないかどうかをチェックするために使用されます。10xより大きくない場合、コード ブロックが実行されます。

予防

  • 論理演算子を使用する場合は、コードを読みやすくし、スペースと改行を適切に使用するように注意してください。
  • 論理演算子の両側のオペランドは同じデータ型 (通常はブール型) である必要があります。
  • 複数の論理演算子を組み合わせて使用​​する場合は、演算子の優先順位がandよりも高いことに注意してくださいor。論理演算子を合理的に使用することで、条件ステートメントをより正確かつ強力にすることができ、より複雑な論理判断を処理できるようになります。

4. ループ構造

1.forループの基本的な使い方

Python では、forループはシーケンス (リスト、タプル、文字列など) または任意の反復可能なオブジェクトを横断する反復ステートメントです。forループの使用の基本は次のとおりです。

  1. 基本forループ:

    for item in iterable:
        # 遍历iterable中的每个item
        print(item)
    
  2. forループ内の反復変数:

    • 反復変数には通常 という名前が付けられますitemが、任意の有効な変数名を使用できます。
    • 反復ごとに、の次の要素itemが割り当てられます。iterable
  3. forループ内のコード ブロック:

    • コード ブロックはインデントする必要があります (通常は 4 つのスペースまたは 1 つのタブ)。
    • 正しいインデントは、Python で構造を制御するための鍵です。
  4. # 遍历列表中的每个元素
    fruits = ["apple", "banana", "cherry"]
    for fruit in fruits:
        print(fruit)
    

この例では、forループはfruitsリスト内の各要素を反復処理して出力します。 5.forループ内のelse:

  • forループには、ステートメントによって中断されるelseことなく、外側のループの各反復で実行されるオプションの句を含めることもできます。break
  • else句は通常、ループが正常に完了したときにクリーンアップ作業または一部のコードを実行するために使用されます。
for item in iterable:
    # 循环体代码
else:
    # 当循环正常完成时执行
    print("循环体已全部执行完毕。")

forループは Python の非常に強力な機能であり、データ処理やファイル操作などのシナリオで広く使用されています。ループを使用forすると、シーケンス内の各要素を簡単に反復して操作できます。

2.whileループの基本的な使い方

Python では、whileループとは、特定の条件に基づいてコードのブロックを繰り返し実行する循環構造です。whileループの使用の基本は次のとおりです。

  1. 基本whileループ:

    while condition:
        # 当condition为真时,重复执行这里的代码
        print("条件为真,继续循环。")
    
  2. ループの基本構造:

    • whileキーワードはループの始まりを示します。
    • 条件式は括弧で囲む必要があります。
    • コード ブロックはインデントする必要があります (通常は 4 つのスペースまたは 1 つのタブ)。
  3. 条件判定

    • ループは条件が真でなくなるまで継続します。
    • 条件は通常、ループが実行を継続するかどうかを決定するブール式です。
  4. count = 0
    while count < 5:
        print(count)
        count += 1
    

この例では、変数が値 5 に達するwhileまでループが繰り返されます。 count5.注意事項:

  • 無限ループを避け、条件が最終的に false になるようにしてください。
  • コードを読みやすく保つために、コード ブロックを正しくインデントします。whileループは、反復的なタスクを実装し、状態を継続的に確認するための重要なツールです。特定の条件が満たされるまで複数回の反復が必要な状況を処理するためによく使用されます。ループを適切に使用すると、whileプログラムの効率と保守性が向上します。

5. ループ制御ステートメント

1.breakステートメントの使用

Python では、ステートメントは、ループであってもループでbreakあっても、現在いるループ構造を直ちに終了するために使用されます。ステートメントの基本的な使用法は次のとおりです。forwhilebreak

  1. ループfor内で使用break:
    for item in iterable:
        if item == "special":
            break  # 退出for循环
        print(item)
    

この例では、ループ内のステートメントがitem「special」に等しい場合、breakループは直ちに終了します。 2.ループwhile内で使用しますbreak

count = 0
while count < 5:
    print(count)
    count += 1
    if count == 3:
        break  # 退出while循环

この例では、count3 に等しい場合、breakステートメントによりwhileループが直ちに終了します。 3.注意事項:

  • breakステートメントは、それが配置されているループ レベルでのみ使用できます。
  • ステートメントが実行されるとbreak、ループ構造は直ちに終了し、ループ本体内の残りのコードは実行されなくなります。
  • これを使用する場合はbreak、無限ループが作成されないように、ループが最終的に終了することを確認する必要があります。breakステートメントはループの実行を制御するための重要な方法の 1 つであり、特定の条件が満たされたときにループを早期に終了できるため、不必要な反復を回避できます。正しく使用すると、breakコードをより効率的かつ柔軟にすることができます。

2.continueステートメントの使用

Python では、continueステートメントは現在のループの残りのコードをスキップし、次の反復を開始するために使用されます。ステートメントが実行されるcontinue、現在のループ反復が直ちに終了し、プログラム制御フローがループの先頭に戻り、ループ条件がチェックされ、条件が true の場合は次の反復が開始されます。continueステートメントの基本的な使用法は次のとおりです。

  1. ループfor内で使用continue:
    for item in iterable:
        if item == "special":
            continue  # 跳过当前迭代,继续下一次迭代
        print(item)
    

この例では、itemループ内で が "special" に等しい場合、continueステートメントにより現在の反復が直ちに終了し、次の反復が開始されます。 2.ループwhile内で使用しますcontinue

count = 0
while count < 5:
    count += 1
    if count == 3:
        continue  # 跳过当前迭代,继续下一次迭代
    print(count)

この例では、count3 に等しい場合、continueステートメントにより現在の反復が直ちに終了し、次の反復が開始されます。 3.注意事項:

  • continueステートメントは、それが配置されているループ レベルでのみ使用できます。
  • 使用する場合はcontinue、望ましい効果でない限り、ループが途中で終了しないようにする必要があります。
  • continueステートメントは通常、不必要な反復をスキップしたり、特定の条件下でループ内でアクションを実行したりするために使用されます。continueステートメントはループの実行を制御するもう 1 つの方法であり、特定の条件が満たされた場合に現在の反復をスキップできるため、ループの効率と精度が向上します。適切に使用すると、continueコードがより柔軟になり、保守が容易になります。

3. pass ステートメントの使用

Python では、passステートメントはアクションを実行しない no-op であり、通常はプレースホルダーとして、またはコード構造の整合性を維持するために使用されます。コードにステートメントが必要だが、実際のアクションを実行したくない場合に使用しますpasspassステートメントの基本的な使用法は次のとおりです。

  1. 基本的なpassステートメント:

    pass  # 这是一个空操作,不执行任何操作
    
  2. 関数定義で使用pass:

    def example_function():
        pass  # 函数中使用pass作为占位符
    

この例では、example_functionこれは空の関数であり、実際のコードは含まれていません。 3.クラス定義での使用pass:

class ExampleClass:
    pass  # 类中使用pass作为占位符

この例では、ExampleClassプロパティやメソッドが定義されていない空のクラスです。 4.注意事項:

  • passステートメントは、特にステートメントが必要だがアクションを実行したくない場合に、コードの構造をそのまま維持するためによく使用されます。
  • これを関数またはクラスのプレースホルダーとして使用すると、pass関数またはクラスが当面機能を実装していない場合でも、コードが Python の構文規則に確実に従うようになります。passこのステートメントは何も操作しませんが、場合によっては、コードを明確で一貫性のあるものに保つ必要があります。正しく使用すると、passコードがクリーンになり、将来のコードのメンテナンスと拡張が容易になります。

6. 演習と例

条件文とループ構造に関する練習問題

  1. 年齢判定: 入力された年齢に基づいて投票可能かどうかを判定するプログラムを作成します(投票年齢は18歳とします)。
age = int(input("请输入年龄:"))
if age >= 18:
    print("可以投票。")
else:
    print("还未到投票年龄。")
  1. 三角形を印刷する:forループを使用して直角三角形を印刷します。
for i in range(1, 6):
    for j in range(1, i + 1):
        print("*", end=" ")
    print()
  1. 数字当てゲーム: 数字当てゲームを作成します。プログラムは 1 から 100 までの整数をランダムに生成します。プレーヤーには数字を当てるチャンスが 10 回あります。
import random
secret_number = random.randint(1, 100)
for attempt in range(10):
    guess = int(input("请猜一个1到100之间的整数:"))
    if guess < secret_number:
        print("太小了!")
    elif guess > secret_number:
        print("太大了!")
    else:
        print(f"恭喜你,猜对了!秘密数字是 {secret_number}。")
        break
    if attempt == 9:
        print("你没有足够的尝试次数来猜出数字。")

現実世界の問題解決の例

質問 1: 個人所得税を計算してください

個人所得税は次のように計算されると仮定します。

  • 月収が5,000元以下であれば、個人所得税を支払う必要はありません。
  • 月収が5,000元以上15,000元以下の場合、税率は5%です。
  • 月収が15,000元以上30,000元以下の場合、税率は10%です。
  • 月収が3万元を超える場合、税率は20%となります。
income = float(input("请输入您的月收入:"))
if income <= 5000:
    tax = 0
elif income <= 15000:
    tax = income * 0.05
elif income <= 30000:
    tax = income * 0.10
else:
    tax = income * 0.20
print(f"您的个人所得税为:{tax:.2f}元。")

質問 2: 1 から 100 までのすべての偶数の合計を計算してください

sum_even = 0
for i in range(1, 101):
    if i % 2 == 0:
        sum_even += i
print(f"1到100之间所有偶数的和是:{sum_even}")

この記事はHeng Xiaopaiの記事の転載であり、著作権は元の著者に属します。この記事を転載するには、原文を参照することをお勧めします。

ライナスは、カーネル開発者がタブをスペースに置き換えることを阻止するために自ら問題を解決しました。 彼の父親はコードを書くことができる数少ないリーダーの 1 人であり、次男はオープンソース テクノロジー部門のディレクターであり、末息子は中核です。ファー ウェイ: 一般的に使用されている 5,000 のモバイル アプリケーションを変換するのに 1 年かかった Java はサードパーティの脆弱性が最も発生しやすい言語です。Hongmeng の父: オープンソースの Honmeng は唯一のアーキテクチャ上の革新です。中国の基本ソフトウェア分野で 馬化騰氏と周宏毅氏が握手「恨みを晴らす」 元マイクロソフト開発者:Windows 11のパフォーマンスは「ばかばかしいほど悪い」 老祥基がオープンソースであるのはコードではないが、その背後にある理由は Meta Llama 3 が正式にリリースされ、 大規模な組織再編が発表されました
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/6851747/blog/11049084