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?

More than 3 years have passed since last update.

[光-Hikari-のPython]05章-04 制御構文(for文~range関数の利用~)

Last updated at Posted at 2020-06-06

#[Python]05章-04 for文~range関数の利用~
前回はリストと指定して、要素を取り出して出力したり、和の計算を行いました。
少し振り返ってみましょう。リスト内の和を求めるプログラムです。

.py
sum = 0
numL = [5, 8, 9, 1, 2]

for n in numL:
    sum += n

print(f'{numL}のリスト要素の和:{sum}')

今、このリストの要素は5つ指定していますが、これがもしリスト内に100個や1000個の要素があったら毎回指定するのは大変です。
そういった要素を簡単に指定する方法にrange関数がありますので、それについての説明を行っていきます。

##range関数
指定範囲の数値を繰り返す場合、range関数を使用します。一般的には以下のようにしています。

関数 説明
range(start, end, step) startからend-1までの範囲を表すオブジェクトを返します。各要素の幅はstepとなります。 startとstepは省略可能です。

startとstepを省略して、**range(10)**と書いた場合、**range(0, 10, 1)**を指定したのと同じになります。
つまり、range(10)は、0, 1, 2, …, 9という10個の数値となります。

実際にプログラムを書いてみます。Python Consoleより以下のコードを入力してください。

.py
>>> range(10)
range(0, 10)

range関数を使用すると、リストみたいな表記でなく、range(0, 10)といった表記になります。(このような表記をイテラブルなオブジェクトの表記と言ったりします。)

これをリスト表記するには、以下のように記載します。

.py
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

また、startやstepなども指定すると以下のようになります。

.py
>>> list(range(5, 20, 2))
[5, 7, 9, 11, 13, 15, 17, 19]

stepが2となっており、5からのstartなので、5~19までの整数で1つ飛ばしで表示されます。

##range関数のfor文への利用
実際にプログラムを書いてみましょう。chap05の中に、05-04-01.pyというファイル名でファイルを作成し、以下のコードを書いてください。
print関数の個所がいつもと異なりますので注意して入力してください。

.05-04-01.py
for i in range(10):
    print(i, end=' ')

<05-04-01.py実行結果>

【実行結果】
0 1 2 3 4 5 6 7 8 9

実行すると、0から9までの数値が表示されます。なお、end=10となっていますが、終わりは10でなくその手前の9となりますので気を付けてください。

また、print関数で**end=' '**と記載しています。
print関数のみですと、出力結果は改行されて縦に表示されますが、**end=' '**とすることで、改行コードの代わりに半角のスペース' 'を入れることになります。(デフォルトでは改行コードとなります。)

##range関数とfor文を利用して和を求める
では、1以上100以下の値の中で、偶数の合計値を求めるプログラムを考えます。font color="#00cccc">chap05の中に、05-04-02.pyというファイル名でファイルを作成し、以下のコードを書いてください。

.05-04-01.py
sum = 0

for i in range(1, 101): #1以上101未満(100以下)の間にfor文内実行
    if i % 2 == 0:  #もしiが偶数の場合は加算する
        sum += i

print(sum)

<05-04-02.py実行結果>

【実行結果】
2550

プログラムを追ってみると、range関数で1以上101未満(100以下)の値をiに代入していき、それが2で割り切れた場合、sumに加算してきます。

##演習問題
演習問題を用意しました。ぜひ解いてみてください。なお、ファイル名は[ ]内に指定したものを使用して、chap05内に作成ください。使用する変数名は好きな変数名を指定してかまいません。

[05-04-p1.py]
【1】range関数を利用して1~100までの整数値の合計を求めるプログラムを作成してください。結果は5050となります。


[05-04-p2.py]
【2】range関数を利用して1~100までの奇数の整数値の合計を求めるプログラムを作成してください。結果は2500となります。


[05-04-p3.py]
【3】整数値nを入力して、n未満の整数に3で割ると1余る数がいくつあるかを調べるプログラムを作成してください。
(ヒント:range関数を使用する際にstartを1にしましょう。また、n回繰り返します。)
<05-04-p3.py実行結果>

【実行結果】
1以上の整数を入力してください:10
1から10未満の整数で、3で割ると1余る数は3個です。

###【目次リンク】へ戻る

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?