【Python入門③】ループ処理

共テ情報I – 最小限のPython入門

反復処理を行う制御構造には,主に for ループと while ループがある.

解説動画

【MENU】
00:00 要項:forループとwhileループ
18:25 Sample 3-1
26:23 Sample 3-2
33:32 Sample3-3
END 39:55

◆ forループ

for文は,指定範囲内で繰り返し処理を行う際に使用される.基本的なfor文の雛形を以下に示す.

for i in range(start, stop, step):
# 繰り返し行う処理

ここで,ループ変数と呼ばれる i(変数名は任意でよい)には start から始まる整数値が順次代入され, step ずつ増加しながら stop に達するまで繰り返し処理が行われる( stop の値は含まない).

※ パラメータに整数値以外を代入するとエラーになる.
※ startstep の値は省略できる.省略した場合のデフォルト値はそれぞれ0と1である.

### 0から4までの整数を順次出力する.

for i in range(0, 5, 1):  # 0, 1, 2, 3, 4
    print(i)
### "Hello, World!"を3回出力する.

for _ in range(0, 3, 1):  # 0, 1, 2
    print("Hello, World!")
### 1から100までの整数の和を計算し,出力する.

goukei = 0

for num in range(0, 100, 1):  # 0, 1, 2, ... , 99
    goukei = goukei + (num + 1)

# for num in range(1, 101, 1):  # 1, 2, 3, ... , 100
#     goukei = goukei + num
# これでも同じこと

print("1から100までの整数の和:"+str(goukei))

◆ whileループ

whileループは,特定の条件が真 (True) である間,指定されたコードブロックを繰り返し実行する.条件式が偽 (False) と評価された時点で,ループは終了し,次のコードへと進む.

while 条件式:
# 条件式が真の間に繰り返し実行するコード
### 変数countの値が5以上になるまでカウントアップする.

count = 0

while count < 5:
    print(count)
    count = count + 1   # countを1増やす(これを忘れると無限ループになる)
### 変数xに2を繰り返し2を掛け,10000を超えるまで続ける.

x = 1

while x < 10000:
    print(x)
    x = x * 2     # "x *= 2"と記述してもよい

※ forループは,ループする回数や範囲が明確な場合や,リストなどのイテラブル(反復可能オブジェクト)を処理する場合に適している.
※ whileループは,ループの終了条件が動的に変化する場合や,ループの開始前にループ回数が不明な場合に使用する.
※ ループを途中で終了したい場合は break 文を,ループの残りの処理をスキップして次の繰り返しに進みたい場合には,continue 文を用いる.

◆ サンプルコード

Sample 3-1

# 素数判定プログラム

# 素数かどうかを調べる数を入力
kazu = int(input("素数かどうか調べたい数を入力してください: "))

# 1とその数自身以外に割り切れる数があるかどうかを調べるフラグ
flag_sosu = True

# 2からkazu-1までの数で割ってみる
for i in range(2, kazu, 1):  # 2, 3, 4, ... , kazu-1 # kazu ** 0.5 まで調べれば充分ではあるが
    if kazu % i == 0:
        flag_sosu = False  # breakでループを抜けることもできる

# 判定結果を出力
if flag_sosu:
    print("素数です.")
else:
    print("素数ではありません.")

Sample 3-2

# 素数判定プログラム

# 素数かどうかを調べる数を入力
kazu = int(input("素数かどうか調べたい数を入力してください: "))

# 1とその数自身以外に割り切れる数があるかどうかを調べるフラグ
flag_sosu = True

# 2からkazu-1までの数で割ってみる
i = 2
while i < kazu ** 0.5 + 1:  # kazu ** 0.5 まで調べれば充分
    print(i)
    if kazu % i == 0:
        flag_sosu = False
        break

    i = i + 1

# 判定結果を出力
if flag_sosu:
    print("素数です.")
else:
    print("素数ではありません.")

Sample 3-3

# 正しいパスワードを設定
aikotoba = "3150"

# ユーザー入力用の変数を初期化
nyuryoku = ""

# パスワードが正しいものになるまで入力を繰り返す
while nyuryoku != aikotoba:
    nyuryoku = input("合言葉:JUKEN7?")
    if nyuryoku != aikotoba:
        print("ブブー")
    else:
        print("ピンポーン")

# ログイン成功メッセージ
print("JUKEN7へようこそ!")

◆ 演習問題

作成中