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

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

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

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

Q&A

解決済

6回答

778閲覧

九九の表を作りたいです。

yuutaasai

総合スコア2

Python

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

0グッド

0クリップ

投稿2021/06/21 10:19

編集2021/06/21 10:22

前提・実現したいこと

九九の表を作りたいのですが改行のシステムについて混乱しています。
完成イメージは下図です
完成イメージを作るための模範解答と解説をを教えていただけるとありがたいです。

完成イメージ

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

試したこと

python

1def kuku(n): 2 print(" |") 3 for k in range(1,n+1): 4 print("{:<2}".format(k), end=" ") 5 print("-"*(n+1)*3) 6 for i in range(1,n+1): 7 print("{} |".format(i)) 8 for j in range(1,n+1): 9 print("{:<2}".format(i*j), end=" ") 10 print() 11 print() 12 13kuku(5)

### 現在の状態

| 1 2 3 4 5 ------------------ 1 | 1 2 3 4 5 2 | 2 4 6 8 10 3 | 3 6 9 12 15 4 | 4 8 12 16 20 5 | 5 10 15 20 25

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

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

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

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

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

guest

回答6

0

質問する場合には、目的が明確になっていると、望む答えを得やすくなります。

たとえば、最短の時間で、間違いのない出力が得られるコードが欲しい、なら以下のようなかいとうになります。冗談ではなく、業務上デバッグ時間を最小にしたければこれが最適な方法です。

python

1kuku5 = ''' 1 2 3 4 5 2------------------ 31 |1 2 3 4 5 42 |2 4 6 8 10 53 |3 6 9 12 15 64 |4 8 12 16 20 75 |5 10 15 20 25''' 8 9print(kaku5)

もしも、formatメソッドの勉強をしたいのなら、以下のようになります。

python

1def head(n): 2 return ' ' + ' '.join(['{:<2}']*n).format(*[i for i in range(1, n+1)]) 3 4def horizontal(n): 5 return '-'*(3*n+2) 6 7def line(n, i): 8 return '{:<2}|'.format(i) + ' '.join(['{:<2}']*n).format(*[j*i for j in range(1, n+1)]) 9 10def kuku(n): 11 print(head(n)) 12 print(horizontal(n)) 13 for i in range(1, n+1): 14 print(line(n, i))

print文の練習をしたいのなら、udon-kenさんのコードが参考になるでしょう。

目的を示さずに最適解を求めるのは、レストランに行って「安くておいしい料理を出してほしい」というのと同じです。

投稿2021/06/21 12:19

ppaul

総合スコア24666

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

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

yuutaasai

2021/06/22 00:34

ありがとうございます。 今度から意識して質問します。
guest

0

完成イメージを作るための模範解答と解説をを教えていただけると

まず、前提が違います。

プログラミングは「こう書けばいい」……ではないです。

プログラムは魔法でもなんでもなく、人間が現実世界でやっていることを逐一指示されながら処理しているだけの代物である』です。

コードを書く人が100人いれば100通りの書き方がある……は言い過ぎでも、基本的にそれぐらいはありますよ。

単に、いわゆる Hello World程度でも、何通りもあります。

  1. 単純に print関数で直接表示する
  2. 変数に"Hello World" を設定して print関数にこの変数を渡して表示する
  3. 変数2つを用意して、一つは"Hello", もう一つは"World"を設定してprint関数に print( a+" "+b )的な感じでやる
  4. 他の言語で"Hello World" を出力するプログラムを組んで、プロセスかなんかで起動する

...

といろんな可能性があります。(まあ、普通、HelloWorld程度なら (1) ですが、邪道なものも含めるといくらでもある)

それを「模範解答くれ」っていうのは見当違いです。

小説を書くようなものですから。

投稿2021/06/21 11:02

BeatStar

総合スコア4958

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

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

ChaosRepainter

2021/06/21 12:31

>「模範解答くれ」っていうのは見当違い ベストプラクティスでググってください。
yuutaasai

2021/06/22 00:33

ありがとうございます。 次回から質問するときに意識しようと思います。
guest

0

表を作るならpandasが適していると思います。

python

1import numpy as np 2import pandas as pd 3 4def kuku(n): 5 t = np.zeros((n,n), dtype=int) 6 line = range(1,n+1) 7 t[0] = line 8 for i in line: 9 t[i-1] = t[0] * i 10 return pd.DataFrame(t,index=line, columns=line) 11 12kuku(9)

投稿2021/06/21 12:19

ChaosRepainter

総合スコア108

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

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

yuutaasai

2021/06/22 00:34

ありがとうございます。 参考になりました。
guest

0

ベストアンサー

とりあえず、完成イメージがあまり良くないと思います。
こういう場合、通常数値は規定の桁数の右寄せとします。

改行については
print("{} |".format(i))
ここでendを指定していないから、|の後で自動的に改行されているだけでは?

コード例

python

1def kuku(n): 2 print(" |", end="") 3 for k in range(1, n+1): 4 print("{:<2}".format(k), end=" ") 5 print() 6 print("-" * (n+1)*3) 7 for i in range(1, n+1): 8 print("{} |".format(i), end="") 9 for j in range(1, n+1): 10 print("{:<2}".format(i*j), end=" ") 11 print() 12 13kuku(9)

とりあえず、だいたいできているようなので、提示されたコードを修正しました。
解説は不要と思います。
提示されたコードを最小限に修正して完成イメージが出力されるようにしただけのものですので、模範解答ではありません。
end二カ所追加、print一カ所追加、一カ所削除したと思います。

投稿2021/06/21 10:44

編集2021/06/21 11:28
udon-ken

総合スコア657

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

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

yuutaasai

2021/06/22 00:32

ありがとうございます。 参考になりました。
guest

0

pythoin3

1def kuku(n): 2 vals = [" {:>2}".format(k) for k in range(1, n + 1)] 3 print(" |" + "".join(vals)[1:]) 4 5 print("-+" + "-" * ((n * 3) - 1)) 6 7 for y in range(1, n + 1): 8 vals = [" {:>2}".format(x * y) for x in range(1, n + 1)] 9 print(("{}|".format(y) + "".join(vals)[1:])) 10 11kuku(9)

実行例
イメージ説明

投稿2021/06/23 22:16

katoy

総合スコア22324

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

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

0

ご参考までにジェネレータとイテラブルアンパック演算子を使用したサンプルコードです。

Python

1def kuku(n): 2 print(*(f'{j:2} ' if j else ' |' for j in range(n+1)), sep='') 3 print(*('---' for j in range(n+1)), sep='') 4 for i in range(1, n+1): 5 print(*(f'{i*j:2} ' if j else f'{i} |' for j in range(n+1)), sep='')

投稿2021/06/21 12:16

lehshell

総合スコア1147

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

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

yuutaasai

2021/06/22 00:33

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問