学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Python | 07 | 繰り返しのプログラム for

<<前  [TOP]  次>>


ターミナルを開いて次の繰り返しのプログラムを作ってみましょう。


【fortest1.py】

#fortest1.py

for i in range(1,6):
	print( 'ようこそ!Pythonの世界へ!' + '(i = ' + str(i) + ')')



このプログラムは、for文という構文を使っています。

for 変数 in 範囲 :
 処理



変数の指定は必ず行います。
範囲で指定した回数分繰り返しを続けます。


範囲指定する際、range()関数を使用しています。
range(5)」のように指定すると「0, 1, 2, 3, 4」が順に変数に入ります。
range(1, 6)」のように指定すると「1, 2, 3, 4, 5」が順に変数に入ります。
range(0,10, 3)」のように指定すると0〜10までの数字で3ずつ増えた数「0, 3, 6, 9」が順に変数に入ります。


ではプログラムを見ていきましょう。
変数 i を宣言して、range関数で指定した「1~5」の値を順に変数iに代入しながらループします。
変数iの値が5になったらループが終わります。


メッセージは全部で5個表示されます。


これを、While文で書き換えると次のようになります。

i=1

while i<=5 :
   print( 'ようこそ!Pythonの世界へ!' + '(i = ' + str(i) + ')')
   i += 1



出力結果です。

fortest1.py
fortest1.py



他にも色々な繰り返しのプログラムを作ってみましょう。


【fortest2.py】

# fortest2.py

print( 'まだループの外です。' )

for count in range(1,6) :
	print( 'ループの中です。:' + str(count) )

print( 'ループの外に出ました。')



出力結果です。

fortest2.py
fortest2.py



次の二重ループするプログラムを作ってみましょう。


【fortest3.py】

# fortest3.py

for x in range(1,10) :
	for y in range(1,10) :
		if x*y < 10 :
			print(str(x*y) + '  ', end='')
		else:
			print(str(x*y) + ' ', end='')
		
	print( '' )



ではプログラムの内容をみていきましょう。


pythonではループの中でループを記述することができます。
これは九九を表示するプログラムです。


まず、変数xの値は1をとっています。
そのまま、もう一つのループに入ります。
変数 y の値が1〜9まで繰り返された後にループを抜けて、今度は変数xの値が2になります。
変数xの値が2のまま、変数yの値が1〜9まで繰り返され、ループを抜けて変数xの値が3になります。
この作業を最後まで繰り返すと九九の表ができあがります。


ここで、if文を使っている次の文を見てください。

		if x*y < 10 :
			print(str(x*y) + '  ', end='')
		else:
			print(str(x*y) + ' ', end='')



これは、10未満の値(一桁の値)のときの条件を記述しています。
表にしたときにずれると嫌なので、一桁の場合数字の前に半角スペースを一つ入れるような処理をしています。
そうすることによって、表の数字が縦横きれいに揃います。
print()メソッドの中でend=''として最後に出力する文字を指定することができます。
今回のようにend=''とすると改行なしで出力することが出来ます。
end='abc'などとすると、最後にabcが足された出力となります。


出力結果を見てみましょう。

fortest3.py
fortest3.py



次の二重ループするプログラムを作ってみましょう。
【fortest4.py】

# fortest4.py

for x in range(1,21):

	if x < 10 :
		print(' ', end='')
		print( str(x) + ':', end='')
	else:
		print( str(x) + ':', end='')

	for y in  range(1,21):

		if x%y == 0 :
				print( str(y) + ',', end='')

	print('')



このプログラムは約数を求めるプログラムです。
約数とは割り切ることができる数字です。
例えば、8は1と2と4と8で割り切れますから、約数は1、2、4、8の4つとなるわけです。


このプログラムも二重ループを使っています。
最初のループでは変数xが1から20になるまで繰り返されます。
内のループも変数yの値が1から20になるまで繰り返されます。


ここで、次の文を見てください。

		if x%y == 0 :
				print( str(y) + ',', end='')

これが実際に約数を求めている部分になります。
もし、x÷yの余りが0(ゼロ)の場合という意味です。


実行結果は次のようになります。

fortest4.py
fortest4.py



次の二重ループするプログラムを作ってみましょう。


【fortest5.py】

# fortest5.py

for x in range(1,10) :
	for y in range(1,10) :
		if y<=x : 
			print( '*', end='')

	print('')



二重ループで「*」を表示させ、三角形を表示させるプログラムです今までのプログラムがわかればこの内容もわかると思います。

fortest5.py
fortest5.py



このプログラムを書き換えて、出力結果を逆三角形にしてみます。


【fortest6.py】

# fortest6.py

array = [9,8,7,6,5,4,3,2,1]

for x in array :
	for y in range(1,10) :
		if y<=x :
			print ('*', end='')

	print('')



変数arrayに [9,8,7,6,5,4,3,2,1]という配列を格納しています。
for文の範囲に配列を渡すことで、変数xに9,8,7,6...1と順番に代入されます。


実行結果です。

fortest6.py
fortest6.py



↓↓クリックして頂けると励みになります。


<<前  [TOP]  次>>