忍者ブログ
the beaten track とは、踏み固められた道。つまりは何時も使っている道。それに off をつける事によって、何時もと違う道を往こう、何時もと違う事をやろう! という願いを秘め日々頑張ってる訳です。
[1] [2
Posted by - 2024.04.20 Sat 09:36:11
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Posted by 甲子 - 2011.09.10 Sat 10:43:06
 turtle モジュールを使って画を描く。なんて事が「Pythonスタートブック」の第7章に書いてあった。

turtle


 画像のサイズ調整が面倒だったので、そのまま。さすがにこのサイズだとサムネ作ってくれぬ。
 未だに GIMP を巧く扱えない。高機能とか高性能好きだが、使えなかったらゴミだしな。いい加減こういった言葉に踊らされる自分は考えを改めるべきだ。特化型を幾つか使って、それらの使い方が判ってから万能型をやった方が効率良さげ。

 そんなこんなで turtle ってモジュールを import で呼び出して遊んだのだが。初めてやった時にはエラーが出た。
 python のインストールをテキトーな感じでやったもんだから、このモジュールが入ってなかった。
 多分、win とか mac ならば、パッケージ化されてる python をインストールしてれば問題ないのだろう……いや、linux でもパッケージ化されてるのがあるのかも知れないが、僕は知らん。

python turtle error


 ショックのあまりふて寝をしようかと思ったが、終わりから三行目に please install the python-tk package という記述を見つける。つまりはこいつが無いんだな、と僕程の高機能な脳みそだと気づく訳ですよ……ゴメンナサイ図二ノリマシタ。僕ほど愚かな人間もそうはいません。

 そんな訳で synaptic パッケージ・マネジャーを起動してやって turtle-tk 検索、即座にインストール。python-tk と python-tk-dbg と二つあったのだが、よう判らんので二つともインストール。
 説明文を見るに、後者のはデバッカーらしいという事だけ判った。デバッカー自体の厳密な意味も実は良く判ってない。テストプレイとかの人をデバッカーという位しか。しょうがないのでこちらはグーグル先生で検索かけてみた。

 DBGファイルを活用する方法

 要するに turtle が異常終了した際に原因は何か? その手がかりをくれるモノだと思われる。まあ、入れといても損はないかな、と。実際にそういったソフトなのかどうかは知りません。
 だが、異常終了なんぞこれでする事はないだろうがな!


 やはり、用語等を知っておくのも重要だ。判らない事だらけ。何となしに使ってる用語もその実ちゃんと意味を判ってない事は多い。モジュールだとか、オブジェクトだとか、プログラムもある意味そうだ。加えて、広義でであったり、狭義でであったりとか。
 モジュールに関しては、それ単体で一つのプログラムとして成り立っていると考えて良いだろう。そのモジュールがあれば、import で呼び出して使用出来る。そしてこれがオブジェクトなんだろう。
 ただ、ポケットリファレンスを読んでると、他の言語ではまた意味が違ったりもするらしい。人間が作ったものだし、当然だわな。トマトが好きというのとあの子が好きってのは、“好き”自体は同じ言葉だが意味合いが違うような感じだろう。これが一緒だったらまた面白いがw トマトよりの好きならスプラッタ!? あの子よりの好きならフェチ?!

 話がそれまくりだが、そろそろスタートブックは読み終えそうだ。データ型とかリスト型、関数それらをどういった場合に使うか? 概念はもとより、それらを使うイメージが全く浮かばないから、読み返す必要はありそうだが。
 TJS もどんどか進めたい。
 今後は、プログラムを使って、RPGを……と言いたいが、シミュレーションRPG の創作に使っていきたい。そっちならまだ可能性がある。

拍手[0回]

PR
Posted by 甲子 - 2010.09.21 Tue 22:12:59
 :6:はじめてのプログラムを書く
 我々はPCでいろいろなソフトを使ってる。それ等は当然別々のプログラム。インストールを個別にしている事からもそれは判ると思う。
 そのプログラムってのは、今までに少し触れてきた命令やまだまだ沢山ある命令を駆使して一つのモノに作り上げる。小さな命令はコード(code)と呼ばれる事もある。

 Python では「ソースコード」と「スクリプト」を同じ意味で使うことがある。これは、ソースコードのままプログラムにできるため。背景として、C言語等のコンパイルが必要な言語があるためらしい。
 コンパイルってのは簡単に述べれば、その言語が認識できる命令で書いたものを今度はPCが認識できる言語に変換するものだと思えば良い……はず。勉強した訳ではないので厳密には判らないが、これ以外に考えられんw


 さて、それではジャンケンプログラムを書いてみる。
 命令が一つの場合はインタラクティブシェルでやれば良いが、先にも述べた通りプログラムってのは小さな命令を幾つも使ったり繋げたりして作る。つーかそれ以外に作る方法は無いはず。論理的に合理的に。

 まずはテキストエディタを使用する。ただ、WIN の場合、メモ帳はダメ絶対。メモリ不足する……まあしないように設定しているなら良いが、お勧めはしない。テキストエディタについてはいろいろと操作感だとかまあいろいろ違うのでそれぞれ何が良いかを模索した方が良いらしい。そういうの模索しているサイトもあるからググるがよろし。
 僕は以前に Emacs をインストールしてるので、それを使用。確か C言語も JAVA もこれを使ってた気がするな。

 import random
 data = ['goo','choki','pa']
 data_choice = random.choice(data)
 print(data_choice)

 以上のコードを記入して、以前作ったディレクトリ(フォルダ)の pyworks に
 janken.py として保存する。まあ、ジャンケンプログラムなので janken にしてるだけ。なので別に他の名前でも良い。ドットの後の拡張子に関しても別に他のでも良い。まあ判りにくくするメリットは無いので、名称は janken にして、拡張子は py にするのが適当だろう。

 ここまで出来たら、端末起動して、pyworks ディレクトリに移動。

 cd pyworks

 移動した後、先ほどのプログラムが動作するか検証。

 python janken.py

 を打ち込んでみれば、結果がでる。

 python janken.py
 goo

 であったりあるいは、

 python janken.py
 choki

 python janken.py
 pa

 という感じになる。


 ジャンケンプログラムの解説的なモノ。
 今回のコードは、import(命令)で random(モジュール)を読み込む。お次はデータの準備。

 data = ['goo','choki','pa']
 表記をまんまで考えれば良い、data という(例えるなら箱の中)に goo、choki、pa を入れる。

 data_choice = random.choice(data)
 data(の中にある goo、choki、pa)を random.choice 命令によって出てきた値を data_choice (例えるなら箱の中)に入れる。

 print(data_choice)
 によって、data_choice に入れられた値を表示する。


 とまあ、こんな感じで非常に簡単だと思う。C言語とか JAVA でもジャンケンプログラムを作ったのだが、それから比べると非常に簡単。後は、全体の括弧括りとか無いのが非常に違和感を感じる位だな。どこまでも突き抜けてしまうのではないのか!? という不安みたいなw

 さて、ここまで本をなぞって書いてみて思うのだが、これって非常に読み辛くて分かり辛いな。でも、個人的にはかなり勉強になる気はする。まあ、現在は初歩すぎるがな。
 後は、なぞり過ぎると著作権侵害とかが怖い。これ以降は感想とかにしとこうか。今でも結構慎重に言葉とか変えてるけど、もっと自分の言葉や考えで置き換えてやり方も変えて記入してこう。
 これにて第1章終了。

拍手[0回]

Posted by 甲子 - 2010.09.14 Tue 11:37:28
 さて、明日続きを記入するとか書いて、早くも3週間近く経っている。
 上手く説明出来ないところがあって、それを調べようとしたのだが、判らん。考え方はあってると思うのだが、正しい用語が判らん。コマンドとかモジュールとか何か被ってねぇか? みたいなね。シェルとか端末とかそういった用語が出てきた時と似たような感慨。
 まあ、あんまし考えてても進まないからとりあえず、進めてみる。進める事によってそれらがまた出てきたりして、そのうち勝手に判るようになるだろう……多分な。


 :5ー2:
 前回の終わりは、文字表記と日本語表記の仕方までやった。その時に、同じ文字であっても “ローマ字” と “かな等” では 'a' くくりか、print('あ')表記の仕方が違うという点をどうしたものか? と思ったのだ。
 ローマ字、これらを使って PC に命令する事もあるから必須になる。んで、かな等を利用している日本語。これは後から組み込まれたモノである。よくブラウザの表示あたりに文字エンコーティングとかに出てくる日本語(Shift_JIS)、文字コードと呼ばれるそれ。

 例えば、端末で python シェルを呼び出し、

 'あ'

 と入力し、出力されるのが

 '\xe3\x81\x82'

 となる。

 この事からも、後から組み込まれたモノであると考えるのが良いかと……説明になってないかも知らんがw
 とりあえず、 'あ' は '\xe3\x81\x82' という文字列に置き換えられているという感じなのだろう。もっと厳密に言えば、PC が理解できるのは 0 と 1 だから、さらに変換されているのだろう。その点でいえば、ローマ字も同じだろう。ただ、変換される回数がおそらく少ない。

 余談だが、これらを考えたときに "ひまわり"(だったと思う)という日本語でプログラムを組める言語があったのを思い出した。……完全なる余談でそれ以外に意味はない。メリットは日本語という事で、個人的には弄るメリットは無いが、面白い試みではあると思う。あるいは、流れを掴むのに良いのかも判らん。


 データをまとめる

 [a,b,c,d,e]

 という感じで [ ] で括って , で区切ってやるとリストが作れる。これがデータをまとめる、という事。これのメリットは何かってのは、正直良く判らんが、いろいろと使い道はあるようだというか、プログラムの肝なんだろう。いまいちイメージが掴めないが。まあ、4章で詳しくやるらしいので、そちらで考えよう。


 モジュールを使用

 モジュールを使用する際の命令 import になる。python を起動した際は最低限の要素だけしよう出来る状態で、使用する際にモジュールを組み込まなければそれを使用する事が出来ない。
 いろいろなモジュールが当然あるわけだが、本に則って random モジュールを使用する。

 import random

 上記のように、import の後に半角スペース random これにて random というモジュールが使用できる。

 random.choice([1,2,3,4,5])
 5

 を入力してやると [1,2,3,4,5] 中からランダムで一つ選ばれて表示される。
 random がモジュールで、その後に . ピリオドを打ち choice が命令でそれに続けて () でくくった [] リストを入れる。
 もしも文字でやりたい場合は、文字表記の約束事を守って表記する。

 random.choice(['a','i','u','e','o'])
 'i'

 上記の様な感じ。print 使った、つまりは日本語の方法もやってみたのだが、判らんかった。どうやるんだろう? やり方は多分あるんだろうけども、まだルールが判らん。



 次回は第1章の最終回にして、はじめてプログラムを書く事になる。このプログラムを書くってのは、スクリプト打つとかソースを書くってのが正解なのではないだろうか? いや、スクリプトも時として違う気もするしどうなのだろう? 一つにまとまったモノがプログラムだと思うのだが?? ……判らない、教えてエロい人!

 さて、次回はなんとジャンケンプログラムを作成する。というか、これ書いている時点で終わってるんだよね。既に3章まで読み終わってるし。とりあえず、JAVA 何かよりも簡単だった……まああれは、ブラウザ上で表記するために読み込んだりとかしたために、工程が多かったという感じだがな。

拍手[0回]

Posted by 甲子 - 2010.08.26 Thu 22:05:10
 :5:
 前回ちょろっと書いたが、Python のシェルにて計算ができる。計算式はとても簡単。
通常の数学の式と考えてよい。
 ただ、式が整数のみの場合、答えも整数での答えとなる。そのため、少数の答えの場合正確に答えが出ない事になる。それを回避するために式に小数を使う。そうすると少数の答えが返ってくる。
 つまり Python は整数と小数区別する。

 Python 演算子
 +  足し算  5+9=14
 -  引き算  19-6=13
 *  掛け算  5*2=10
 /  割り算  10/2=5
 **  累乗   2**3=8
 %  剰余   5%2=1


 文字表記
 文字を表記する場合は 'a' あるいは "b" のように、文字の前後にシングルクォーテーションあるいはダブルクォーテーションを使用する。そうするとそれが出力される。日本語表記は出来ない。

 日本語表記
 print('こんにちは')
 という具合に print コマンドを使用する。



 ――諸事情により明日、この続きを追記する。

拍手[0回]

Posted by 甲子 - 2010.08.25 Wed 03:29:08
 Pythonスタートブックを参照しつつというか、それに則って勉強を始めている。

 これから書く事は、ぶっちゃけ正確に把握出来てない事も多い。なんで、違ってたら違ぇーし! と、気楽に誰でも突っ込んでくれると嬉しい。


 :1ー2:

 そうして、第1章。プログラムを作ろう! なんとも、プログラムを作りたい人を舌なめずりさせる様な文句であるかは知りませんが、まあ最初の意気込みというか予定調和ですね。なんて事を書く駄文も必要はない、と。

 Python の利点
 1 覚えるべき点が他の言語と比べると少ない
 2 本格的なソフトウェアの作成も出来る
 2' NASA や Google 等の内部で利用されている


 :3:
 インストールについて。説明されているのが、WIN と MAC なので割愛。
 ubuntu10.04の場合は簡単
 アプリケーション → Ubuntuソフトウェアセンター
 そこで Python を検索でもして、必要そうなのをインストールすれば良い。大雑把過ぎるが、僕も詳しくは知らん。まあ説明内容見てインストールすれば多分大丈夫だろう。結構前にやったからどうしたのか全く覚えてないんだよねー。さっき調べたら、僕の開発環境は最新の 3.X じゃなくて 2.X だったし。2.X から 3.X に移るときに結構変更があったらしい。まあ、この本に関していえば、どっちでも動くプログラムを扱っているそうだから、関係はあんまり無い。
 後は、ソース書くように Emacs あたりをインストールしとくと良い。


 :4:
 インターフェースの話。
 ここでのインターフェースは、入力等をして PC に命令できる画面。
 CUI(キャラクターユーザインターフェース) と GUI(グラフィカルユーザインターフェース) がある。現在ここに行き着いてこれを見ている人は GUI を使ったと言っても良いと思う。大雑把に言えば、マウスを使って視覚的に分かりやすいのが GUI。DOS とかのように、キーボードのみで操作する文字ばっかのが CUI だと思えば良いだろう。
 CUI はあるいはあの真っ黒い画面が出る、コマンドプロンプト他の言い方だと端末とかと言った方が良いかもしらん。
 よく、PCスペックを見たい時に dxdiag と入力したり、レジストリを見たり変更する時に regedit.exe と入力したりした事がある人もいるだろう。レジストリは誤って弄ると動かなくなったりするから注意。ちなみにどちらも WIN 用のコマンド。LINUX(ubuntu)では実行出来なかった。MAC は持ってないから知らんが、恐らく出来ないのではないだろうか?

 でまあ、CUIをいろいろ弄り倒すって事なんだろう。つー訳で書いてある通りに弄ってみる。この本自体は WIN と MAC なので、LINUX だとどうなのかという話がこれから主になってくると思う。でもまあ、せいぜい違いがあるのは CUI 位のもんだろう。というか、基本的に UNIX の流れを汲んでいる LINUX は、それをベースにしていると言われる MAC とほぼ変わらんとも思う。

 でまあ、それからやった事は CUI でディレクトリ作ったりディレクトリ移動したり。WIN で言えばフォルダ作成やら別のフォルダ開いたり。

 以下のコマンドは LINUX で検証。WIN は試せるが使う気がないので知らん。
 コマンドは全て半角。コマンドの後には必ず、半角スペースが必要。半角スペースがなければ一つのコマンドとして捉えられてしまう。

 mkdir **** (入力でディレクトリ作成 ****はディレクトリの名称は任意)
 cd **** (入力で****ディレクトリに移動)
 cd .. (一つ上のディレクトリに移動(*1))
 cd   (cdのみの入力だと、ホームディレクトリに戻る)
 ls   (ディレクトリ内に存在するファイルを見る(*2))
 dir   (ディレクトリ内に存在するファイルを見る(*2))
 pwd  (現在いるディレクトリを表示する)

 *1
 .. はドットを二つ。

 *2
 WINの場合 dir コマンド、MAC だと ls コマンドとなる。LINUX の場合どちらのコマンドでも、ファイルを見る事自体は可能。だが ls コマンドを使用した場合、ディレクトリは水色で出力され、プログラム等は白色で出力される。最初何故色がつくのか判らなかったが、ジャンケンプログラムを置いてみて解った。

 開発環境を整えていれば
 python
 と入力してやると、Python のシェルを使用する事が出来る。(>>> こんな表記になれば良いとの事)
 quit()
 でシェルから抜ける事が出来る。

 今まで CUI の流れで話を進めた訳だが、今まで使っていたそれは OS に付属していたシェルを使用して OS に処理をさせる。今度は Python のシェルを使用して Python に処理をさせる。シェルだとか CUI だとか、重なり合う部分が多く正確には把握できてない。

 なんとなく思うのは、それぞれのシェルがあるのはそれぞれに特化していると考えるのが妥当。例えば OS の場合、それを単体で使う事はまず無い訳で、いろいろなソフトを入れたりしてそれらを使用する。そのため、それらの処理や管理や制御等が主に必要な所だろう。そのためシェルに関してもそれらに特化していると思う。余計な要素を入れればそれだけ処理に時間もかかり負担も大きくなる。よって遅くなる。

 それならば別な所でそれをやった方が良い。後にやる事だが、Python のシェルでは簡単な数式を入力するとすぐに答えが返ってくる。あるいは OS のシェルでもやれる事かも判らんが、同じ入力方法では出なかった。

 という感じでそれぞれ違ってくる。まあ、WIN MAC LINUX それぞれでコマンドが違う事からも判ると思う。で、何故コマンドが違うのか? それが特化する事に繋がってくると思う。作成者が違うという事もあるが、それよりも何に主軸を置くのか、という事で特化に戻る。
 そういった事があるからこそ、言語ってのはいろいろあってそれぞれのコマンドがあるんだろうな。まあ、作成者が違うってのもあるだろうけど。


 さて、脱線してしまった。これの書き初めは書くことねーとか思ったが、いざやり始めるとかなりいろいろ書いて長くなった。もともと今回のブログに関しては最たる目的も無い訳だし駄文連ねてってのが僕らしい。全部やり終えて、もっと解り易いのを書けそうであれば、新に僕流の Python 勉強講座でも書くとする。

拍手[0回]

ブログ内検索
CALENDAR
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
PROFILE
HN:
甲子
年齢:
40
HP:
性別:
男性
誕生日:
1984/04/07
職業:
フリーターしつつライター
趣味:
読書、創作、武道武術
自己紹介:
 答えを得たり。
 自分の人生を生きるために行動する。
小説 創作状況
最新記事
(11/15)
(07/30)
(07/18)
(07/10)
(07/08)
最新コメント
[07/19 甲子想]
[06/13 甲子想]
[03/28 弓圭]
[11/26 甲子想]
[04/04 甲子想]
忍者Ad
アーカイブ
バーコード
Template by mavericyard*
Powered by "Samurai Factory"
忍者ブログ [PR]