動作検証バージョン:Windows 10 Pro(64-bit)+ Python 3.8.3(32-bit)
「Python九九if文奇数のみ」
という検索キーワードでアクセスがありました。
Pythonで九九の表を作成するときに、結果が奇数の数値のみを出力したいということでしょうか。
[スポンサードリンク]
九九表を作るサンプル
まずは、一般的な九九表を作成するPythonのコードを確認しましょう。
for r in range(1, 10):
for c in range(1, 10):
print(f'{r*c:4d}', end='')
print('\n', end='')
for c in range(1, 10):
print(f'{r*c:4d}', end='')
print('\n', end='')
上記のスクリプトを実行すると以下のような九九表が出力されます。
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から9までのfor文の中で、
for r in range(1, 10):
もう一つ1から9までのfor文を回し、
for c in range(1, 10):
掛け算した値を同じ行に出力し、
print(f'{r*c:4d}', end='')
内側のfor文を処理し終えたら、改行のみを出力しています。
print('\n', end='')
この行は、
print()
でも構いませんが、改行することを明確にするため、print関数の引数に「'\n', end=''」を指定しています。
掛け算の値を出力する処理は、縦方向にも数値がキレイに並ぶほうがイイでしょうから、f-stringで、4桁の幅で出力されるように指定しています。
print(f'{r*c:4d}', end='')
奇数のみの九九表を作る
で、if文を使って奇数のみの九九表を作成するなら以下のようなコードでしょうか。
for r in range(1, 10):
for c in range(1, 10):
if r*c % 2 != 0:
print(f'{r*c:4d}', end='')
print('\n', end='')
for c in range(1, 10):
if r*c % 2 != 0:
print(f'{r*c:4d}', end='')
print('\n', end='')
先ほどのスクリプトに、「r*cを2で割った結果が0でない場合」という条件のif文を入れています。
実行すると以下のような九九表が出力されます。1 3 5 7 9 3 9 15 21 27 5 15 25 35 45 7 21 35 49 63 9 27 45 63 81
range関数の第3引数を指定した場合
if文を使うのではなく、range関数の第3引数stepを指定して、変数r・cを
1・3・5・7・9
と変化させる以下のようなコードでもイイのかなと私は感じます。
for r in range(1, 10, 2):
for c in range(1, 10, 2):
print(f'{r*c:4d}', end='')
print('\n', end='')
for c in range(1, 10, 2):
print(f'{r*c:4d}', end='')
print('\n', end='')
この場合は以下のような九九表が出力されます。
1 3 5 7 9 3 9 15 21 27 5 15 25 35 45 7 21 35 49 63 9 27 45 63 81
最終更新日時:2020-11-04 06:50
[スポンサードリンク]