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

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

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

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

Q&A

解決済

2回答

1234閲覧

パイソン 二次元リストについて

akiki55511

総合スコア2

Python

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

0グッド

0クリップ

投稿2021/05/09 13:58

編集2021/05/09 14:34

前提・実現したいこと

パイソンで二次元リストで図を表示したいのですが、難しくてなかなか上手くいきません。
このデータの数字が奇数の場合、"*"を表示し、偶数の場合、何も表示しないという図を作りたいです。分かる人お願いします!
例えば、data = [
[7,9,3],
[0,1,4],
[7,3,5],
]
のデータから得られる図は、
***
␣*  <␣は空白です。
***
と表示されるようなpicture_art(data)を定義したいのですが...

■■な機能を実装中に以下のエラーメッセージが発生しました。

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

縦に表示されてしまう。

該当のソースコード

python

1data = [ 2 [7,12,148,175,30,70,146,151,136,16,75,122,68,38,172,183,124,126,76,138,153,145,49,44], 3 [121,70,48,153,47,14,62,189,138,64,127,108,178,154,107,2,91,122,120,64,93,56,54,55], 4 [7,82,114,21,138,201,170,91,92,106,51,62,140,103,58,52,82,41,122,164,31,166,22,65], 5 [5,54,120,117,142,114,111,23,104,76,85,172,110,165,135,135,167,147,58,114,137,118,52,139], 6 [143,58,112,45,66,116,86,33,184,122,33,66,128,93,108,166,56,25,156,18,69,65,1,52], 7] 8 9def picture_art(data): 10 for line in data: 11 for dot in line: 12 if dot % 2 == 1: 13 print("*", end="") 14 else: 15 print(" ", end="") 16 print() 17 18print(picture_art(data))

試したこと

01のドット絵を表示する方法と同じ方法でやってみたのですが、うまくいきませんでした。

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

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

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

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

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

y_waiwai

2021/05/09 14:06

どう表示されるんでしょう。 また、それがどういうふうに表示されたらいいんでしょうか
meg_

2021/05/09 14:08

picture_artのコードが掲載されていません。(途中で送信されましたか?)
akiki55511

2021/05/09 14:13

お返事ありがとうございます! def picture_art(data): for line in data: for dot in line: if dot % 2 == 1: print("*", end="") else: print(" ", end="") print() print(picture_art(data)) このようにして実行してみたら、 * * * * * このように、アスタリスクが縦に表示されてしまいました。これを、 ** *** のように、横に表示したいのですが、方法が見つかりません。
y_waiwai

2021/05/09 14:15

質問文の方に追記してください。 インデント潰れると読めないので、code でお願いします
guest

回答2

0

ベストアンサー

print()の位置を変更すれば良いです。

Python

1def picture_art(data): 2 for line in data: 3 for dot in line: 4 if dot % 2 == 1: 5 print("*", end="") 6 else: 7 print(" ", end="") 8 print() 9 10data = [ 11 [7,12,148,175,30,70,146,151,136,16,75,122,68,38,172,183,124,126,76,138,153,145,49,44], 12 [121,70,48,153,47,14,62,189,138,64,127,108,178,154,107,2,91,122,120,64,93,56,54,55], 13 [7,82,114,21,138,201,170,91,92,106,51,62,140,103,58,52,82,41,122,164,31,166,22,65], 14 [5,54,120,117,142,114,111,23,104,76,85,172,110,165,135,135,167,147,58,114,137,118,52,139], 15 [143,58,112,45,66,116,86,33,184,122,33,66,128,93,108,166,56,25,156,18,69,65,1,52], 16] 17 18picture_art( data ) 19#* * * * * *** 20#* ** * * * * * * 21#* * * * * * * * * 22#* * ** * ***** * * 23#* * * * * * ***

投稿2021/05/09 14:38

meg_

総合スコア10760

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

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

akiki55511

2021/05/09 14:41

ありがとうございます!print()の位置の問題だったのですね。解決しました!
guest

0

すいません勝手に進めちゃいました。
なんか文字が出てきました。

bash

1$ python picture_art.py 2* * * * * *** 3* ** * * * * * * 4* * * * * * * * * 5* * ** * ***** * * 6* * * * * * ***

python

1data = [ 2 [7,12,148,175,30,70,146,151,136,16,75,122,68,38,172,183,124,126,76,138,153,145,49,44], 3 [121,70,48,153,47,14,62,189,138,64,127,108,178,154,107,2,91,122,120,64,93,56,54,55], 4 [7,82,114,21,138,201,170,91,92,106,51,62,140,103,58,52,82,41,122,164,31,166,22,65], 5 [5,54,120,117,142,114,111,23,104,76,85,172,110,165,135,135,167,147,58,114,137,118,52,139], 6 [143,58,112,45,66,116,86,33,184,122,33,66,128,93,108,166,56,25,156,18,69,65,1,52], 7] 8 9 10def is_odd(x): 11 return x % 2 == 1 12 13 14def make_line(row): 15 vs = [is_odd(x) for x in row] 16 vs = map(lambda v: "*" if v else " ", vs) 17 return "".join(vs) 18 19 20def picture_art(data): 21 for row in data: 22 print(make_line(row)) 23 24 25picture_art( data ) 26

投稿2021/05/09 14:40

hide5stm

総合スコア426

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

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

akiki55511

2021/05/09 14:42

気にしないでくださいww
akiki55511

2021/05/09 14:46

そんなやり方もあるのですね。ちなみにINIADです。気になったら調べてみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問