-Python- ループ処理と条件分岐

プログラムではループ処理と条件分岐が多用されます.以下にそれらのプログラム例を示します.

for文
ループ処理によって1から100までの和を求めるプログラム例を以下に示します.

 
import numpy as np
sum = 0
for i in range (1, 101):

 

    sum = sum + i
 
このプログラム実行結果は,
 
5050
 
となる.
 
while文
ある条件に限ってループを実行する際にはwhile文を使用します.
例として,100から3ずつ減算して,50を切ったまでの結果を表示するプログラムを以下に示します.
 
import numpy as np
rest = 100
array_r = np.array(rest) #配列化して結果を表示
while rest > 50:
    rest = rest - 3

 

    array_r = np.append(array_r,rest) #計算結果を配列に追加
 
実行結果は,以下のようになります.
 
[100 97 94 91 88 85 82 79 76 73 70 67 61 58 55 52 49]
 

if文
if文を用いて数値が偶数か奇数かを判定するプログラム例を以下に示します.

 
import numpy as np
num = input('enter a value :') #数字の読み取り
num = int(num) #整数型への変換
sur = np.mod(num,2)
if sur == 0:
    print('Even')
else:

 

    print('Odd'
 

プログラムでは,入力した値の偶数,奇数を判定するようになっています.実行結果は以下のようになります(以下の実行例では,上記プログラムをtest.pyとして実行しています).

$ python test.py
enter a value :5
Odd
 

for文,while文,if文を使ってフィボナッチ数列フィボナッチ数列の偶数だけを抜き出すプログラム例を以下に示します.

 
import numpy as np
fib = [0,1]
fib_odd = [0]
for i in range(1,51):
    num = fib[i] + fib[i-1] # i番目とi-1番目を足す
    fib = fib + [num]       # fib配列に追加(np.appendと同じ)
    if num % 2 == 0:        # % はnp.modと同じ処理
        fib_odd = fib_odd + [num] #偶数だけを fib_odd 配列に追加
print(fib)

 

print(fib_odd) 
 
このプログラムを実行すると以下のようになります.
 
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025, 20365011074]
[0, 2, 8, 34, 144, 610, 2584, 10946, 46368, 196418, 832040, 3524578, 14930352, 63245986, 267914296, 1134903170, 4807526976, 20365011074]
 

上記の例では表示される値の数が多いので,数列の値が10000を超えたらループ処理を停止するには以下のようにbreakを使ってif文の条件を満たした場合に,forループから抜けるようにします.

 
import numpy as np
fib = [0,1]
fib_odd = [0]
for i in range(1,51):
    num = fib[i] + fib[i-1]
    fib = fib + [num]
    if num % 2 == 0:
        fib_odd = fib_odd + [num] 
    if num > 10000:
        break
 
print(fib)

 

print(fib_odd)
 
実行結果は以下のようになり,上記の実行結果に比べてスッキリとしました.
 
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946]
[0, 2, 8, 34, 144, 610, 2584, 10946]