2重ループ

九九の表

九九の表を出力するプログラムを作成しなさい。 インデント(行頭の空白)に十分注意して作成すること!

解答例99.py

i = 1   #かけられる数
while i < 10:
	j = 1   #かける数
	while j < 10:
		print(i * j, end=" ")
		j = j + 1
	print()   #改行
	i = i + 1
H:\prg1\10> python 99.py↵
1 2 3 4 5 6 7 8 9 
2 4 6 8 10 12 14 16 18 
3 6 9 12 15 18 21 24 27 
4 8 12 16 20 24 28 32 36 
5 10 15 20 25 30 35 40 45 
6 12 18 24 30 36 42 48 54 
7 14 21 28 35 42 49 56 63 
8 16 24 32 40 48 56 64 72 
9 18 27 36 45 54 63 72 81 

プログラムの書き換え問題

九九を計算すると1桁または2桁の数がでる。上のプログラムのように計算結果をそのまま出力させると, 1桁と2桁の数が交った表になり,列(かける数)をそろえて出力することができない。

下の出力結果のように,i * j(かけられる数×かける数)を右寄せ2文字で出力させるように上のプログラムを改良してみなさい。

H:\prg1\10> python 99.py↵
 1  2  3  4  5  6  7  8  9 
 2  4  6  8 10 12 14 16 18 
 3  6  9 12 15 18 21 24 27 
 4  8 12 16 20 24 28 32 36 
 5 10 15 20 25 30 35 40 45 
 6 12 18 24 30 36 42 48 54 
 7 14 21 28 35 42 49 56 63 
 8 16 24 32 40 48 56 64 72 
 9 18 27 36 45 54 63 72 81 

ヒント

i * jが10未満かどうかの条件判断を行い, 真の場合にスペース1文字を出力させる文print(' ', end="")を書き加えればよい。 あるいは,%演算子やformatメソッドを用いる方法もある。 この授業では書式付文字列については詳しく取り上げないので, この問題(書式付文字列の詳細)は,興味のある履修者への宿題とする。

解答例

99.pyの5行目のprint文を次のいずれかの文に書き換えればよい。



for文による別解

for i in range(1, 10):
	for j in range(1, 10):
		print(i * j, end=" ")
	print()