hakeの日記

Windows環境でプログラミングの勉強をしています。

2015-01-01から1年間の記事一覧

python - クラス

コンストラクタは、__init__(self, *args) メソッドの最初の引数はself クラス変数は、クラス名.変数名 インスタンス変数は、self.変数名 #coding: cp932 class A: def __init__(self, arg): self.var = "instance var : " + arg def print(self): print(A.v…

Windows10 - 右クリックメニュー「送る」に項目を追加する方法

下記フォルダに追加したいアプリケーションのショットカットを追加する。 C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\SendTo

python - 正規表現

reモジュールのメソッドを使用する場合。 import re # クラスメソッド # # # 文字列中にヒットする部分があるかを評価する m = re.search(r'[a-z]', '1a2b3c') print(m.group()) # a print(type(m)) # <class '_sre.SRE_Match'> print(m) # <_sre.SRE_Match object; span=(1, 2), match='a'> print(m.group(0)) # a print(m.start(0))</_sre.sre_match></class>…

python - False(偽)となるデータ

None、False、空文字、数値の0、空のコンテナが偽となる。 #coding: cp932 def is_true(arg): if arg: print("True") else: print("False") is_true(None) # False is_true(True) # True is_true(False) # False is_true(1) # True is_true(0) # False is_tr…

python - 辞書(dict)

#coding: cp932 d = {"foo": 1} d["bar"] = 2 d["baz"] = 3 print(d) # -> {'baz': 3, 'bar': 2, 'foo': 1} # keyを一つずつ取得 for k in d: print(k, "", end="") # -> baz bar foo print() # (key, value)を一つずつ取得 for t in d.items(): print(t, ""…

python - テキストファイルアクセス

# 一括リード f = open("test.txt","r") data = f.read() print(data) f.close() with open(filename, opt) as f とすると、close()を明示しなくても良いので楽。 rubyのFile.open(filename, opt){|f| do_something }と同じ? #coding: cp932 # 一括リード w…

python - print

python 2系では、引数に括弧が不要だが、python 3系では関数になったので括弧必須。 #coding: cp932 # デフォルトで改行有り print("Hello") print("World") # -> Hello # World # 改行なし print("Hello", end="") print("World") # -> HelloWorld # 複数の…

python - 制御構文

for文、while文ともelse節がある。else節はbreakで中断せずにループが終了した場合に実行される。 #coding: cp932 for i in range(5): # if i == 3: break print(i) else: print("else節実行") i = 0 while i < 5: # if i == 3: break print(i) i += 1 else:…

python - 例外処理

try節で例外が発生した場合、対応する例外のexcept節が実行される。例外の種別を指定しない場合は、 except Exception とする。 また、例外が発生しない場合はelse節が実行される。finally節は例外発生の有無に関わらず実行される。 #coding: cp932 try: pri…

python - Windowsへのインストール

入手先 今回は最新版のpython 3.5.0(python-3.5.0-amd64.exe)をインストールする。 python japan https://www.python.org/downloads/ あとwindows版のpython 3系は、numpyなどで通常の追加ライブラリでイストールできない場合があるそうなので、その場合のラ…

Windows10起動時のエラー

昨日から起動時に以下の様なエラーが出るようになりました。 「重大なエラー スタートメニューとCortanaが作動していません。再びサインインして、修復を試みます。」 一回サインアウトして再度サインインすると普通に動作する様になるのですが、起動時に毎…

Go言語 - PEGで構文解析 - 構文木の作成

PEGで構文木を作成するプログラムを書いてみました。 簡易化の為に、識別子(ident)と代入演算子(=)と加算演算(+)のみ解析して、ポーランド表記で出力します。 構文 root <- expression EOT / expression <.+> EOT / エラー用 <.+> EOT エラー用 EOT <-…

Go言語 - PEGで構文解析 - 字句解析

Go言語でPEGによる構文解析方法があることを知ったので、簡単な字句解析部分のみのプログラムを書いてみました。ruleの書き方はgoyaccよりも融通が利いて便利そうです。 参考サイト GolangとPEGで作る言語処理系 vol.1 入手先および構文の書き方 GitHub - po…

Go言語 - データのランダムシャッフル

ライブラリにシャッフルがなさそうだったので作成。Fisher-Yates shuffleというアルゴリズムを使用しました。 package main import "fmt" import "time" import "math/rand" func shuffle(list []int){ for i := len(list); i > 1; i-- { j := rand.Intn(i) …

Go言語 - 巨大な数を扱う

math/bigライブラリを使用することで巨大な整数や有理数を扱うことができます。 フィボナッチ数列を表示するプログラム。 package main import ( "fmt" ) func main() { var f0 uint64 = 1 var f1 uint64 = 1 for i := 1; i < 100; i++ { fmt.Println(i,f0) …

Go言語 - 無名関数とクロージャ

ある関数foo内で定義された無名関数は、foo内のローカル変数にアクセスできる。 package main import "fmt" func foo() { var s string = "hello foo" f := func(){ fmt.Println(s) } f() } func main() { foo() //-> hello foo } 関数fooの戻り値として返さ…

Go言語 - EXCELファイル操作

xlsx形式のエクセルファイルを読んだり、新規作成したりできます。 ただし、xlsxファイルを開いて、そのファイルを変更保存する。あるいは変更した内容を別名保存すると、その保存したファイルをExcelで開くときに内容を修復する旨のメッセージがでます(Exc…

Go言語 - goyaccで構文解析

Go言語にはgoyaccという構文解析ツールがあるので一番単純な整数の四則演算を行うプログラムを作成してみました。 以下は作成のポイントとなるメモです。 参考サイト goyaccで構文解析を行う lex.Lexer(lex/lexer.go) 先日作成した字句解析プログラムを少…

Go言語 - Set(集合)

本日からGo言語の使用環境は、go version go1.5.1 windows/amd64 です。 Goでsetを扱う方法を見てSet型を作成してみました。

新PC購入 & Windows10アップグレード

前回のレッツノート購入から7年半ぶりの新PC購入です。 Windows10プリインストールモデルまで待とうかとも思いましたが、近場の家電量販店でWindows8.1モデルが底値かなということでモバイル用途のPC(レッツノートの後継)のみ購入しました。初64bit環境と…

Go言語 - WALKでGUI - ListBox

ListBoxの使用例。ウィンドウ上がListBox。 表示項目をstringのスライスにしてModelフィールドに置くことで表示させます。各項目はクリックおよびダブルクリックでイベントが発生します。 ボタンクリックで項目を追加しています。方法はListBox.Model()で項…

Go言語 - 字句解析プログラム

勉強がてら字句解析プログラムを作成してみました。 Lexser.Scan()を実行する毎に、sample.txtから一文字(rune)ずつ読み込み、1トークンを読み込んだら、そのトークンの書かれている行、桁、トークン種類、トークンリテラル文字列を表示します。 数字はNUM…

Go言語 - WALKでGUI - DialogBox

DialogBoxの使用例。 DialogBoxで入力した文字列をMain Windowに表示させています。 Main側と同様にDialogのレイアウトと実体用の構造体を用意します。一点だけ追加として、DefaultButtonとCancelButtonフィールドに各々対応するPushButtonの実体を割り当て…

Go言語 - WALKでGUI - MessageBox

MessageBoxの使用例。 ボタンクリックでMessageBoxを作成し表示させています。 4番目の引数でメッセージボックスのスタイルを指定しています。また各々のスタイルのボタン種類で戻り値が変わるので、戻り値に応じた処理が必要になります。

Go言語 - break先のラベルの位置

二重のforループからの脱出先として、forブロックの下にラベルを書いたらエラーになりました。どうやらforブロックの上に書くのが正解みたい。 感覚的にはブロックの下の方が正しいように思えます。何故上なのだろう? package main import "fmt" func main(…

Go言語 - WALKでGUI - FileDialog

FileDialogの使用例。 ボタンクリックでFileDialogを作成し表示させています。 walk.FileDialog構造体を作成して、ShowOpenメソッドで表示させます。ダイアログがキャンセルで閉じられた場合には戻り値のokがfalseになり、trueの場合はFilePathフィールドか…

Go言語 - WALKでGUI - 単独起動する実行ファイルの作成

WindowsでWALKライブラリを使用したGUIアプリケーションの起動には、マニフェストファイルを同じ場所に置いておく必要がありましたが、rsrcというツールでマニフェストファイル(とアイコンファイル)を実行ファイル内に取り込むことで単独起動するファイル…

Go言語 - WALKでGUI - Menu

Menuの使用例。以下の構造のメニューを作成しました。 File Else ├ Open └ About ├ SubMenu | └ SubItem1 └ ExitMainWinsdowのMenuItemsフィールドにMenuウィジェットを階層的に置いていき末端の項目にはActionウィジェットを置いています。 各ActionのOnTr…

Go言語 - WALKでGUI - RadioButton

RadioButtonの使用例。起動時にRadioButtonを選択してある状態にする方法がわからない。。。 RadioButtunをRadioButtonGroupBoxの中に配置することで、そのグループ内で排他選択ができるようになります。各RadioButtonウィジェットから、そのボタンが選択さ…

Go言語 - WALKでGUI - CheckBox

CheckBoxの使用例。 CheckBoxも状態を保持するので、MyMainWindow構造体に変数を追加し、実体としてアサインします。 二つのCheckBoxをGroupBoxの下に配置して、LayoutフィールドをHBoxにすることでCheckBoxを水平に並べています。また、Check1のCheckedフィ…