Pythonの基礎(ループ処理、条件分岐)

あらゆるプログラミングで重要なループ処理と条件分岐を勉強します。

for文

Pythonでのループ処理はforを使用する。
1から100までの和を求めるプログラムを作ってみよう。

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

ループ内に入れたいものをスペース4つで下げます。下がっている文はループ内で処理される。
注意してほしいのはPythonは最初が0からスタートしているので、100まで足すときには範囲を1から101にしなければなりません。
またfor文末のコロンを忘れないようにしましょう。

while文

ある条件の間に限りループを実行したいときはwhileを使用する。
例えば200から7ずつ引いていって、100を切るまでの各値を計算してみよう。

import numpy as np
rest = 200
array_r = np.array(rest) #表示を横に並べたいので配列化する
while rest > 100:
    rest = rest - 7
    array_r = np.append(array_r,rest) #計算した結果を配列に追加する
print(array_r)
[200 193 186 179 172 165 158 151 144 137 130 123 116 109 102  95]

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')

inputはコンソールの入力を受け取る関数です。inputではまず文字列型としてデータを受け取るので一度整数型に直すためにint関数を使用しています。
if文のところは他のプログラムと大きく変わりません。コロンをつけるのとインデントに注意してください。3つ以上に分岐するときはif elif elseと使います。

ちょっと応用

for文やwhile文とif文が混ざったプログラムを書いてみましょう。
50番目までのフィボナッチ数列で偶数だけを抜き出すプログラムを書いてみます。

import numpy as np
fib = [0,1]
fib2 = [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と同じ
        fib2 = fib2 + [num] #偶数だけをfib2配列に追加
print(fib2)
[0, 2, 8, 34, 144, 610, 2584, 10946, 46368, 196418, 832040, 3524578, 14930352, 63245986, 267914296, 1134903170, 4807526976, 20365011074]

数が多いのでフィボナッチ数列が10000を超えたらループを停止するようにしてみます。

import numpy as np
fib = [0,1]
fib2 = [0]
for i in range(1,51):
    num = fib[i] + fib[i-1]
    fib = fib + [num]
    if num % 2 == 0:
        fib2 = fib2 + [num]
    if num > 10000:
        break
print(fib2)
[0, 2, 8, 34, 144, 610, 2584, 10946]

breakによりif文の中の条件を満たした場合、forループの外に抜けることができます。

今日はここまで。