🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

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

Q&A

3回答

9380閲覧

全角スペースを出力したいのに、/3000と出てくる

Henjin213

総合スコア22

Python

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

0グッド

0クリップ

投稿2019/09/08 07:49

前提・実現したいこと

Python初心者です。
将棋のアプリを作っています。
なにもない空白のますを、空白のまま表示したいのですが、実行すると
/3000 と出力されます
内包表記を使わなければスペースのまま表示されます。
なぜこうなるのか、内包表記のままスペースを表示するにはどうしたらいいかなど、初心者にわかるように教えていただけると助かります。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

python

ソースコード # 0:自分のコマ 1:相手のコマ 2:開いてるマス 一段目 = [[1, '香'], [1, '桂'], [1, '銀'], [1, '金'], [1, '玉'], [1, '金'], [1, '銀'], [1, '桂'], [1, '香']] 二段目 = [[2, " "], [1, "飛"], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [1, "角"], [2, " "]] 三段目 = [[1, '歩'], [1, '歩'], [1, '歩'], [1, '歩'], [1, '歩'], [1, '歩'], [1, '歩'], [1, '歩'], [1, '歩']] 四段目 = [[2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "]] 五段目 = [[2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "]] 六段目 = [[2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "]] 七段目 = [[0, '歩'], [0, '歩'], [0, '歩'], [0, '歩'], [0, '歩'], [0, '歩'], [0, '歩'], [0, '歩'], [0, '歩']] 八段目 = [[2, " "], [0, "角"], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [0, "飛"], [2, " "]] 九段目 = [[0, '香'], [0, '桂'], [0, '銀'], [0, '金'], [0, '玉'], [0, '金'], [0, '銀'], [0, '桂'], [0, '香']] 将棋盤 = [一段目, 二段目, 三段目, 四段目, 五段目, 六段目, 七段目, 八段目, 九段目] def 盤面表示(): for a in 将棋盤: list = [b[1] for b in a] print(list) 盤面表示()

試したこと

初心者なので、何をどうしていいかわかりません。
ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答3

0

オブジェクトをlistなどのコレクションの中身にした場合、基本的にはreprに基づいて表現が決まります。この場合、一部の文字はユニコードエスケープで表現されます。

リストをそのままprintするのではなく、適宜文字列に変換してください。

python

1一段目 = [[1, '香'], [1, '桂'], [1, '銀'], [1, '金'], [1, '玉'], [1, '金'], [1, '銀'], [1, '桂'], [1, '香']] 2二段目 = [[2, " "], [1, "飛"], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [1, "角"], [2, " "]] 3三段目 = [[1, '歩'], [1, '歩'], [1, '歩'], [1, '歩'], [1, '歩'], [1, '歩'], [1, '歩'], [1, '歩'], [1, '歩']] 4四段目 = [[2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "]] 5五段目 = [[2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "]] 6六段目 = [[2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "]] 7七段目 = [[0, '歩'], [0, '歩'], [0, '歩'], [0, '歩'], [0, '歩'], [0, '歩'], [0, '歩'], [0, '歩'], [0, '歩']] 8八段目 = [[2, " "], [0, "角"], [2, " "], [2, " "], [2, " "], [2, " "], [2, " "], [0, "飛"], [2, " "]] 9九段目 = [[0, '香'], [0, '桂'], [0, '銀'], [0, '金'], [0, '玉'], [0, '金'], [0, '銀'], [0, '桂'], [0, '香']] 10 11将棋盤 = [一段目, 二段目, 三段目, 四段目, 五段目, 六段目, 七段目, 八段目, 九段目] 12 13 14def 盤面表示(): 15 for a in 将棋盤: 16 lst = [b[1] for b in a] 17 print(" ".join(lst)) 18 19 20盤面表示() 21""" => 22香 桂 銀 金 玉 金 銀 桂 香 23  飛           角   24歩 歩 歩 歩 歩 歩 歩 歩 歩 25                  26                  27                  28歩 歩 歩 歩 歩 歩 歩 歩 歩 29  角           飛   30香 桂 銀 金 玉 金 銀 桂 香 31"""

投稿2019/09/08 07:56

hayataka2049

総合スコア30935

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

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

Henjin213

2019/09/08 08:04

早速の回答ありがとうございます。 コンソール上で表示する際に、将棋盤で言う4−6段目の空白部分が何列あるか見づらいので、あえてリストをそのままprintしたのですが、リストを表示した上で全角スペースを表示する必要はないでしょうか。
hayataka2049

2019/09/08 08:22

リストっぽいフォーマットで表示させることは努力すればできると思いますが、その手間をかけるなら他の方法を考えるべきかと。
guest

0

printで、構造を持った型のデータを表示するのは、どちらかというとデバッグ用と考えたほうが良いと思います。

Python

1def 盤面表示(): 2 for a in 将棋盤: 3 list = [b[1] for b in a] 4 print(" ".join(list))

のように、自分で文字列化したほうがいいです。

text

1香 桂 銀 金 玉 金 銀 桂 香 2  飛           角   3歩 歩 歩 歩 歩 歩 歩 歩 歩 4                  5                  6                  7歩 歩 歩 歩 歩 歩 歩 歩 歩 8  角           飛   9香 桂 銀 金 玉 金 銀 桂 香

こう見ると、後手陣が違和感ありまくり。

投稿2019/09/08 08:51

otn

総合スコア85882

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

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

0

楽したいなら全角スペースのかわりに半角スペース2つにするのもひとつの手です。

実行結果。等幅フォントの環境で確認ください。

['香', '桂', '銀', '金', '玉', '金', '銀', '桂', '香'] [' ', '飛', ' ', ' ', ' ', ' ', ' ', '角', ' '] ['歩', '歩', '歩', '歩', '歩', '歩', '歩', '歩', '歩'] [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '] [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '] [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '] ['歩', '歩', '歩', '歩', '歩', '歩', '歩', '歩', '歩'] [' ', '角', ' ', ' ', ' ', ' ', ' ', '飛', ' '] ['香', '桂', '銀', '金', '玉', '金', '銀', '桂', '香']

投稿2019/09/08 08:11

can110

総合スコア38341

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問