前回でプログラマーとしての一歩を踏み出しましたが、今回はもう少し複雑なことをやってみましょう。
今回で、人間がやるには面倒な処理を、PCに一瞬でこなしてもらえるようになります。
for文
同じような処理を何回もしてもらいたい時、ありますよね。そんな時に用いるのがfor文です。
for i in range(5):
print("Hello world")
を実行してみてください。Hello worldが5回出力されたと思います。
(":"やインデントに注意)
なんとなく想像がつくと思いますが、rangeの中身が5なので5回繰り返されました。こう書いても同じです。
for i in range(0, 5):
print("Hello world")
今回のfor文は、iというindexを0にセットし、それが4になるまで繰り返します。for文の中身、今回だと print("Hello world!")
を終えるとindexが1増えます。つまり
Hello world ←i=0
Hello world ←i=1
Hello world ←i=2
Hello world ←i=3
Hello world ←i=4
みたいな状態になっています。range(a, b)だと、b-1まで繰り返されることに注意です。
文章で書くとなんだかややこしいですが、色々試してみれば実感できると思います。
これなら3回繰り返されますね。
for i in range(2, 5):
print(Hello world)
また、iというindexを出力することもできます。
for i in range(0, 5):
print(i)
indexはiじゃなくてもOKです。
for j in range(5):
print("Hello world")
for _ in range(5):
print("Hello world")
では、前回の復習も兼ねて、以下の例題を解いてください。
例題
整数a=1を用意して、aに2を4回足していくことで、10以下の正の奇数を出力せよ。
解答例
a = 1
print(a)
for i in range(4):
a = a + 2
print(a)
多少コードの形が違っても、出力が合っていれば多分できています。
chatGPTに問題文、回答、解答例を送って合っているか聞いてみるのも良いです。
前回、イコールは代入の演算子だと強調しましたが、ここでもその気持ちを大事にしてください。
if文
for文ともう1つ非常に重要なものが、このif文です。
この2つをマスターすれば、ほとんどのアルゴリズムを作成することができるようになるので、頑張りましょう。
if文は、その名の通り、条件判定を行うことができます。
以下のコードを実行してみましょう。
a = 2024
b = a%2
if b==0:
print(a, "は偶数")
このコードで2024が偶数かどうかを判定しています。%はあまりを求める演算子でした。
if b==0
は文字通り「bが0なら」という意味で、成立していたら print(a, "は偶数")
を実行します。
if b==0
ではイコールが2つであることに注意してください。
また、条件を満たさなかった場合はelseで実行することができます。
a = 2025
b = a%2
if b==0:
print(a, "は偶数")
else:
print(a, "は奇数")
2025を2で割った余りは0でないので、print(a, "は奇数")
が実行されます。
例題
以下は500未満の非負整数をすべて出力するコードです。
これをいじって、100未満の奇数をすべて出力するコードに変更せよ。
(500は変えないこと)
for i in range(500):
print(i)
-ヒント-
ifの条件はandやorで重ねることができます。
使い方を調べてみましょう。
解答例
「等しくなかったら」というのはif i != b
のように書けます。
「2で割った余りが0でない」かつ 「100未満」をif文にしましょう。
for i in range(500):
if i%2!=0 and i<100:
print(i)
多少コードの形が違っても、出力が合っていれば多分できています。
chatGPTに問題文、回答、解答例を送って合っているか聞いてみるのも良いです。
list
今回のメインテーマはfor文とif文だったのですが、list型の変数も重要な上に次回軽く使うので、もう少し頑張りましょう。
前回変数を学んで、これに数字を代入しました。
実は、この変数にまとめて情報を入れておくこともできます。その際用いるのがlist型の変数で、数学のベクトルっぽい気持ちです。
以下のコードを書き写してみてください。
a = [1, 3, 5, 7, 9]
print(a)
print(a[0])
[1, 3, 5, 7, 9]
1
が出力されましたね。このように、[]の中にまとめて数字を入れておくことができます。その中のi番目の要素を取り出したいときは、a[i]のように指定してあげます。
プログラミングでは、大体0からカウントするので、今回はa[0]が1、a[4]が9になっています。
listを使えば、「10以下の奇数を出力する」例題をこのように解くこともできます。
ans = []
a = 1
for i in range(5):
ans.append(a)
a += 2
print(ans)
中身のないリストansを用意しておいて、ans.append()
でリストに要素を追加しています。
先ほどはaを1, 3, 5, ...と更新していたので、for文を終える頃にはa=9という情報しか残っていなかったのですが、listを使えば情報を取っておくことができます。
例題
2023が素数か判定せよ。素数でない場合、割れる数を出力せよ
解答例
2から"自身-1"のすべての整数で割ってみて、それぞれ余りが0かどうか判定すれば良いです。
a = 2023
for i in range(2, a):
if a%i == 0:
print(i, "で割れる")
break
if i==a-1:
print("素数")
2からどんどん割る数を増やしてみて、あまりが0だったら素数でないのでfor文を抜けます。紹介していませんでしたが、break
でfor文を抜けることができます。
a-1になっても抜けていなければ、それは素数です。
今回は、簡単なアルゴリズムをやりました。
もちろん、もっともっと色々なことができるのがプログラミングです。ただ、すべてのアルゴリズムの基礎は今回のif文とfor文なので、ぜひマスターしてください!
- 第0回 はじめに
- 第1回 プログラミングをしてみよう
- 第2回 if文、for文を使ってみよう
- 第3回 グラフを描いてみよう
- 第4回 物理の計算をしてみよう
- 応用編 関数(メソッド)を使ってみよう
- 番外編 環境構築をしてみよう