0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第2回 for文、if文を使ってみよう

Last updated at Posted at 2024-12-23

前回でプログラマーとしての一歩を踏み出しましたが、今回はもう少し複雑なことをやってみましょう。
今回で、人間がやるには面倒な処理を、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
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?