7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonで1行ででかい💩を表示するまでの道のり

Last updated at Posted at 2018-11-04

#TL, DR
print("\n".join([f'{" "*(10-i)}{"💩"*i}' for i in range(10)]))

#1.💩の表示
そもそもprintで絵文字を表示できていたかの確認


>>> print("💩")
💩

よし,出だしは順調
(考えてみれば日本語が入力できるので,絵文字も出力できてもおかしくなかった)

#2. 片階段💩の作成
絵文字をよくよくみる限りおそらくでかい💩は正三角形型に💩を並べれば良さそう
ならばfor文で適当に片階段💩が作れるはず
高さはとりあえず10段ぐらいでいいだろう


>>> for i in range(10):
...   print("💩"*i)
... 
💩
💩💩
💩💩💩
💩💩💩💩
💩💩💩💩💩
💩💩💩💩💩💩
💩💩💩💩💩💩💩
💩💩💩💩💩💩💩💩
💩💩💩💩💩💩💩💩💩

ここまではいい感じ

#3.正三角形のでかい💩の作成
正三角形を作るということは💩の前にスペースを置きたい,
💩が全角ということを考えると(本当に全角かは不明)
一行あたりに置くスペースの数は

(段数-i)/2\times2

となるはずだ
つまりコードにすると

>>> for i in range(10):
...   print(f'{" "*(10-i)}{"💩"*i}')
... 
         💩
        💩💩
       💩💩💩
      💩💩💩💩
     💩💩💩💩💩
    💩💩💩💩💩💩
   💩💩💩💩💩💩💩
  💩💩💩💩💩💩💩💩
 💩💩💩💩💩💩💩💩💩

これでいいと思ったが,何かが違う
これでは💩ツリーだ

#4.💩ツリーの1行化
テクいことはできないので,素直にリスト内包表記を使っていく
ここでちょっと迷ったのが,
print([i for i in range(10)])
[print(i) for i in range(10)]
で結果が違うのだ(当たり前かもれないが)

それぞれ結果は

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

0
1
2
3
4
5
6
7
8
9
[None, None, None, None, None, None, None, None, None, None]

となる
下のコードの最後のNone配列ってなんだ?と思ったが,考えてみれば自然なことでインタプリタではリストの内容が勝手にprintされているので,print文の戻り値がリストに入っているのである

今回はインタプリタでもカッコよく💩を見せたいので,リストを生成してprintしてやろうと思う
ただし素直に書いてあげるとリストがそのまま表示されてしまうので(下コード)

>>> print([f'{" "*(10-i)}{"💩"*i}' for i in range(10)])
['          ', '         💩', '        💩💩', '       💩💩💩', '      💩💩💩💩', '     💩💩💩💩💩', '    💩💩💩💩💩💩', '   💩💩💩💩💩💩💩', '  💩💩💩💩💩💩💩💩', ' 💩💩💩💩💩💩💩💩💩']

joinを使って結合してあげる

>>> print("\n".join([f'{" "*(10-i)}{"💩"*i}' for i in range(10)]))

         💩
        💩💩
       💩💩💩
      💩💩💩💩
     💩💩💩💩💩
    💩💩💩💩💩💩
   💩💩💩💩💩💩💩
  💩💩💩💩💩💩💩💩
 💩💩💩💩💩💩💩💩💩

これでワンライナー💩ツリーの完成だ

#終わりに
これが本当のクソ記事ってね

#Environment
python3.7

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?