質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

2366閲覧

Pythonで九九の表を作成したい!

syogo

総合スコア2

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/07/26 12:35

編集2020/07/26 12:49

前提・実現したいこと

Pythonで以下のような九九の表を作成しようと試行錯誤しています。
「〇」部分は、質問の都合上記入したものですので、無視して下さい。
九九の表のうち、左下半分が存在しない形になっています。

1 2 3 4 5 6 7 8 9
〇 4 6 8 10 12 14 16 18
〇〇 9 12 15 18 21 24 27
〇〇〇 16 20 24 28 32 36
〇〇〇〇 25 30 35 40 45
〇〇〇〇〇 36 42 48 54
〇〇〇〇〇〇 49 56 63
〇〇〇〇〇〇〇 64 72
〇〇〇〇〇〇〇〇 81

該当のソースコード

for cnt1 in range(1,10): for cnt2 in range(1,10): print(cnt1*cnt2,end='\t') print('')

試したこと

上記のように、一般的な九九の表を出力できるところまではたどり着きましたが、
その後どう加工すれば良いのか、掴めていません。

変数cnt2の内側のループにif-else文を使って、
不要な時は'\t'のみを表示するように改造すればよいかもしれないと考えましたが、
具体的なプログラムにたどり着いていません。

見苦しい文章ですが、お力をお借りできれば幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/07/26 12:42

コードは「コードの挿入」で記入してください。
syogo

2020/07/26 12:50

ご教示ありがとうございます。変更いたしました。
guest

回答3

0

print内で表示内容を変えるやつ。

Python

1for cnt1 in range(1, 10): 2 for cnt2 in range(1, 10): 3 print(f"{cnt1 * cnt2 :>2}" if cnt2 >= cnt1 else '', end='\t') 4 print()

投稿2020/07/26 13:11

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syogo

2020/07/26 13:24

ご回答ありがとうございます。 print()内で表示内容を変更する方法があるのですか!初学者で恐縮です。大変勉強になります。
guest

0

ベストアンサー

C の同様の出題を引用し、Python に書き直して回答します

C - 九九の表の右上半分だけ残したい。|teratail

iとjの関係を考えると,i < jという条件が右上に相当することがわかります

ただし、こちらの問題は対角線上の計算結果も出力したいので、比較演算子は <= にします:

python

1for cnt1 in range(1,10): 2 for cnt2 in range(1,10): 3 if cnt1 <= cnt2: 4 print(cnt1 * cnt2, end='\t') 5 else: 6 print('\t', end='') 7 print('')

実行結果:

console

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

投稿2020/07/26 12:51

編集2020/07/26 12:53
y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syogo

2020/07/26 13:16

ご回答ありがとうございます。 実行結果の正確さにおいて、僭越ながらベストアンサーにいたしました。 print('\t', end='')が特に思いつきませんでした。 この関数では何ができるのか、まだまだ勉強不足のようです。精進いたします。
guest

0

変数cnt2の内側のループにif-else文を使って、

不要な時は'\t'のみを表示するように改造すればよいかもしれないと考えましたが、

ほぼ答えにたどり着いています。
「対角線より左下」という条件をcnt1,cnt2の値で判定すればできます。
ちなみに「対角線上か?」はcnt1 == cnt2で判定できます。

Python

1for cnt1 in range(1,10): 2 for cnt2 in range(1,10): 3 if cnt1 == cnt2: 4 print(cnt1*cnt2,end='\t') 5 else: 6 print('',end='\t') 7 print('')

投稿2020/07/26 12:43

編集2020/07/26 12:45
can110

総合スコア38341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syogo

2020/07/26 13:19

ご回答ありがとうございました。 「対角線より左下を表す条件」「対角線上かどうかを表す条件」をどう表せば良いか、たどり着きませんでした。大変良い勉強になりました。数学的な想像力とでも言いましょうか、自分にはまだまだ不足しているようです。精進いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問