Axes3D.view_init(elev, azim) Matplotlib では、Axes3D.view_init(elev, azim) を使って、三次元グラフを「どの方向から見るか」を指定できます (下図の矢印が視線の方向)。 引数の elev, azim は、それぞれ elevation angle (仰角)、azimuth (方位角) の略で、上図の θ, φ に相当するパラメータです("azimuth" は「アジマス」と発音します)。 Matplotlib をインポートして、適当な三次元グラフをプロットしてみます。 # MATPLOTLIB_AXES3D_INIT_VIEW […]
Python コミュニティ広場を開設しました このページは、皆さんに Python について楽しく自由に語ってもらう ために用意しました。 「Python でこんなことをしてみたい。でも、どんなコードを書いていいかわからない」 「こんなコードを書いてみたけど動かない。どこに原因があるのかな?」 みたいに技術的な疑問点を尋ねてもいいですし、 「Python のここが好き」 「今、他にこんな言語を学んでいるんだけど ...」 「あのライブラリの最新バージョンがアップされたよ」 みたいに他愛のない(?)おしゃべりも楽しいです。 もちろん、現役エンジニアの皆様の 「ここは、こう書くべきだ!」 「い […]
Pygame Zero ゲーム開発入門 Pygame Zero はプログラミングの教育目的で設計された、Python のゲーム開発用ライブラリです。色々な手続きをバックグラウンドで処理してくれるので、短いコードでゲームを作れるようになっています。実際、ある程度 Python のコードを書ける人であれば、Pygame Zero の習得は決して難しくないはずです。ゲームが好きな人、特に私のようなファミコン世代 (← 年がバレる) にとっては、遊び感覚で楽しみながら学習できると思います。私は数値計算屋で、ゲーム開発が専門ではありませんが夢中になりました。しばらく本業をほったらかしてゲームを作ってま […]
補数 (complement) この記事では 補数 (complement) について解説します。補数は計算機理論を学ぶ上で欠かせない概念です。基本情報技術者試験などにも頻繁に登場する用語なので、プログラマーを目指す皆さんもしっかり押さえておきたいところです。 補数の定義 「補数」なんて初めて聞くと、いかにも技術的な雰囲気がして難しそうに思えますが、実はとても簡単です。厳密な定義から始めると、簡単なことまで不必要にややこしく感じてしまうので、具体例から始めます。ひとまずは $10$ 進数で考えることにします。 $8$ に対する $10$ の補数は $2$ $35$ に対する $10$ […]
Pythonでじゃんけん 人間のプレイヤーとコンピュータが じゃんけん をして勝敗を表示するプログラムを作ってみましょう。プレイヤーの出す手は、 グー, チョキ, パー の 3 通りです。それぞれの手に対してコンピュータの出す手も グー, チョキ, パー の 3 通りなので、その組み合わせは全部で 3 × 3 = 9 通りあります。とはいえ、9 通りの分枝を記述するのは大変なので少し工夫します。そのために、じゃんけんの手のそれぞれに、 グー: 0 点, チョキ: 1 点, パー: 2 点 という数字を割り当てて、次のような判定スコアを定義します。 じゃんけん判定スコア = [ […]
Googletrans Google は Google Translate (Google 翻訳) とよばれる多言語翻訳サイトを無料で提供しています (左側のボックスにテキストを入れると、自動的に右側に翻訳文を表示してくれるという、とてもシンプルな使い方のできる Web アプリです)。Googletrans は、Google Translate API を実装した Python ライブラリです (Python から Google Translate に接続できるということです)。 Google Colaboratory を利用している場合、コードセルに次のコードを打ち込むと、Googlet […]
filter() Python の filter() はリストやタプルなどから、特定の条件を満たす要素を抽出 (フィルタリング) する組み込み関数です。filter() 関数の正式構文は filter(function or None, iterable) ですが、実用上は filter(関数, リスト) と覚えておけば十分です。ただし、関数は何でもよいというわけでなく、True または False を返すように定義されていなければなりません。簡単な例として、50 以上の数値を渡すと True を返す関数 geq_fifty() と、適当なリストを filter() に渡してみます。 # P […]
Noneオブジェクト None は NoneType クラス から生成される唯一のオブジェクトであり、値が存在しない ことを示すために用いられます。C 言語の Null や Ruby の nil に相当します。 # PYTHON_NONE # In[1] # Noneのクラスを調べる type(None) NoneType たとえば、戻り値が設定されていない関数を実行してみましょう。 # In[2] # 戻り値のない関数を定義 # pass は何もしないコード def myfunc(): pass myfunc() 画面には何も表示されませんが、このとき実際には None オブジェクトが […]
特殊メソッド Python では基本的にオブジェクトに対する操作は関数 func(object) あるいはメソッド object.func() によって実行されます。 しかし、すべての操作がこの形で実行されるわけではありません。たとえば、オブジェクト同士の加算は算術演算子「 + 」、リストのインデクス 1 から 3 までのスライスは list[1:3] で実行されます。 このような特殊構文を使うことによって、コードをなるべく簡潔に記述できるように設計されています (足し算を行なうたびに逐一メソッドを記述しなければならないような言語を使いたいとは思わないはずです)。 とはいえ、構文は特殊 […]
キューとスタック キュー (queue) と スタック (stack) はコンピュータにおける最も基本的なデータ構造です。どちらも一列に並んだデータですが、取り出し方が異なります。 キューの構造は FIFO (First In First Out : 先入れ先出し) とよばれ、下の概念図にあるように、格納順にデータを取り出せる仕組みになっています (一番古いデータから順に取り出します)。 一方、スタックはキューとは逆に新しいデータから先に取り出します。この仕組みを LIFO (Last In First Out : 後入れ先出し) とよびます (下図参照)。 Python には que […]