4
0

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 1 year has passed since last update.

KDDI Engineer&DesignerAdvent Calendar 2021

Day 24

PythonとColaboratoryでクリスマスツリーを描いてみた

Posted at

メリークリスマス!!

              ★
             ★★★
            ★★★★★
           ★★★★★★★
          ★★★★★★★★★
         ★★★★★★★★★★★
        ★★★★★★★★★★★★★
       ★★★★★★★★★★★★★★★
      ★★★★★★★★★★★★★★★★★
     ★★★★★★★★★★★★★★★★★★★
    ★★★★★★★★★★★★★★★★★★★★★
   ★★★★★★★★★★★★★★★★★★★★★★★
  ★★★★★★★★★★★★★★★★★★★★★★★★★
 ★★★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
         ★★★★★★★★★★★
        ★★★★★★★★★★★★★
       ★★★★★★★★★★★★★★★
      ★★★★★★★★★★★★★★★★★
     ★★★★★★★★★★★★★★★★★★★
    ★★★★★★★★★★★★★★★★★★★★★
   ★★★★★★★★★★★★★★★★★★★★★★★
  ★★★★★★★★★★★★★★★★★★★★★★★★★
 ★★★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
         ★★★★★★★★★★★
        ★★★★★★★★★★★★★
       ★★★★★★★★★★★★★★★
      ★★★★★★★★★★★★★★★★★
     ★★★★★★★★★★★★★★★★★★★
    ★★★★★★★★★★★★★★★★★★★★★
   ★★★★★★★★★★★★★★★★★★★★★★★
  ★★★★★★★★★★★★★★★★★★★★★★★★★
 ★★★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
                            ■
                            ■
                            ■
                            ■
                            ■
WWWWWWWWWWWWWWW   メリークリスマス!!   WWWWWWWWWWWWWWW

コード

# ツリーのパラメータ定義
top = 15      # 1段目の高さ
others = 10   # 2段目以降の高さ
step = 3      # 段の数
tree = 5      # ツリーの根の■の数

# 一番上の部分を作る
for i in range(1, top + 1):
  space_num = top - i
  start_num = 2 * i -1
  for j in range(space_num):
    print(" ",end="")
  for j in range(start_num):
    print("",end="")
  print()

# 二段目以降の部分を作る
for k in range(1, step):
  for i in range(top + 1 - others, top + 1):
	  space_num = top - i
	  start_num = 2 * i - 1
	  for j in range(space_num):
	    print(" ",end="")
	  for j in range(start_num):
	  	print("",end="")
	  print()

# ツリーの根の部分を作る
for i in range(tree):
	for j in range(2 * top - 2):
		print(" ",end = "")
	print("")

# メッセージ表示
print("WWWWWWWWWWWWWWW   メリークリスマス!!   WWWWWWWWWWWWWWW")

きっかけ

先日、Qiitaでも著名で自然言語処理の第一人者、かつ**「今シンガポールにいますLineBotてきとりすなど数々のクソアプリも開発している@youwhtさんがコピペで簡単実行!キテレツおもしろ自然言語処理 PythonとColaboratoryで身につく基礎の基礎」**を出版されました。

B09JZ32G7W.01.SCLZZZZZZZ_SX500.jpg

私も早速この本を購入し、**自分でもなんかやってみよう!**と思い、この記事を書くに至りました。
こちらの書籍の第1章に、1行で愛を作るコードが書かれています。

print('\n'.join([''.join([('Love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0else' ') for x in  range(-30, 30)]) for y in  range(15, -15, -1)]))

heart.png

私の場合、1行とは行きませんでしたが、この書籍の「はじめに」に書かれている

映画に出てくるスーパーハッカーは、黒と緑の画面を見つめながら「よーしいい子だ」「ビンゴ!」とかやっていますがあれはフィクションです。実際のプログラマーの多くは、Google検索や過去に書いたコードからサンプルをコピペしてちょっと書き換える、という作業をしています。

と同様に、ググって見つけたコードを自分なりに改変してクリスマスツリーを完成させました。
(なのでコードに関してはいろいろツッコミどころがあると思いますが・・)

Google Colaboratoryを使ってみる

**Google Colaboratory**を使えば、ブラウザからクラウド上の環境を使ってPythonのコードを動かすことが可能です。
PCにPythonをインストールするなど環境構築をする必要ありません。Googleアカウントさえあればすぐに始められます。超絶便利で、しかも無料です。

上記にアクセスしたら、まず「ノートブックを新規作成」をクリックします。
Googleアカウントでログインしてない場合は、ここでログインが求められます。

01.png

すると下記のように、コードを書くことができる画面が出てきました

02.png

ここで、冒頭で紹介したクリスマスツリーを描くコードをコピペします。

そして左にある実行ボタンをクリックします。
(画面を開いて最初に実行する際は、バックグラウンドでサーバを起動しているため5~10秒程度待たされます。2回目からは一瞬で実行できます。)

03.png

すると出力結果が出てきました。
なお、コードの冒頭で定義しているパラメータの数字を少しイジるとツリーの形が変わります。

04.png

こんな感じで簡単に使うことができます。
私の過去の記事**「機械学習初心者がテレビゲームの売上データセットを使って回帰モデル・分類モデルを作成してみた」**でも、Google Colaboratoryを使っています。

さいごに

ということで、**KDDI Engineer&Designer Advent Calendar 2021**の24日目、クリスマスイブにちなんだ投稿でした。

4
0
1

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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?