Ruby 6-1-5

こんにちは!

初めてのサンガスタジアム、臨場感も高く良いスタジアムやった!!

配列

そろそろ配列終わります。

array_reverse.rb
Image from Gyazo

Image from Gyazo

並び順を逆にするreverseメソッドです。

array_sort.rb
Image from Gyazo

Image from Gyazo

一般的な昇順ソートを行うsortメソッドです。
文字列と数値など、互いに大小比較できないものはエラーとなります。

array_sortby.rb
Image from Gyazo

Image from Gyazo

sortメソッドにブロックを渡すことで独自のルールでの並び替えが可能です。

array_sort_title.rb
Image from Gyazo

Image from Gyazo

ブロック構文を用いることでハッシュ配列をソートすることが可能です。

array_shuffle.rb
Image from Gyazo

Image from Gyazo

shuffleメソッドでランダムのソートも可能です。

array_max.rb
Image from Gyazo

Image from Gyazo

maxメソッドとminメソッドで要素を比較します。
数値であれば大小、文字列であれば辞書順に比較します。

array_sum.rb
Image from Gyazo

Image from Gyazo

sumメソッドで要素値の合計を求めます。

array_reduce.rb
Image from Gyazo

Image from Gyazo

配列を順に処理するreduceメソッド、今回は数値の総積を求めています。

array_group.rb
Image from Gyazo

Image from Gyazo

group_byメソッドで、戻り値が等しいものを同じグループとして分割できます。

array_group2.rb
Image from Gyazo

Image from Gyazo

条件によって2分割するpartitionメソッドです。

array_chunk.rb
Image from Gyazo

Image from Gyazo

戻り値の値によって配列を分割するchunkメソッドです。
正規表現に合致するかどうかを分割の基準にしています。

配列の多種多様なメソッドを確認いたしました。
次回からはセットに入っていきます。

ではでは。

Ruby 6-1-4

こんにちは!

今朝はまだ過ごしやすい。

配列

配列の続きです。

array_find.rb
Image from Gyazo

Image from Gyazo

配列の検索結果を要素の値で返すfindメソッドです。
合致した要素をすべて取得する場合はfind_allメソッドを使用します。
合致しないものを取得するrejectメソッドもあります。

array_grep.rb
Image from Gyazo

Image from Gyazo

正規表現パターンを検索するgrepメソッドと、合致しない場合のgrep_vメソッドです。

array_grep2.rb
Image from Gyazo

Image from Gyazo

grepメソッドは、より正確には引数と要素値を「===」演算子で比較するメソッドです。

array_compact.rb
Image from Gyazo

Image from Gyazo

nil以外の要素を取得するcompactメソッドです。

array_map.rb
Image from Gyazo

Image from Gyazo

配列の要素を順番に加工するmapメソッドです。

array_all.rb
Image from Gyazo

Image from Gyazo

すべてが真か判定するall?メソッド、いずれかが真か判定するany?メソッド、
1つだけが真か判定するone?メソッド、すべてが偽か判定するnone?メソッド、があります。

array_all2.rb
Image from Gyazo

Image from Gyazo

all?メソッドなどには、ブロックを省略する構文や正規表現を渡すパターンもあります。

じっくりいきましょう。

ではでは。

Python 6-2

こんにちは!

久しぶりにエラーと格闘した。。。

キャンバスを使う

前回の続きです。

list0604_2.py
Image from Gyazo

Image from Gyazo

同じフォルダ内に画像を置いていても読み込んでくれませんでした。
そこで、file='ファイル名'としていましたが、直接パスを記載すると解決しました。
ファイル名で拾ってくれなかったのは、おそらく作業ドライブの問題かと思いますが、確定的なことは言えません。

気を取り直して残りに取り掛かります。

おみくじを引くソフトを作る

GUIの基礎前半の最後として、おみくじを作成します。

list0605_1.py
Image from Gyazo

Image from Gyazo

まずはサンプルの巫女さんを表示しました。
4行目のresizable()命令でウインドウサイズの変更を制限しています。

list0605_2.py
Image from Gyazo

Image from Gyazo

ラベルとボタンを配置しました。
最後におみくじ機能の実装です。

list0605_3.py
Image from Gyazo

Image from Gyazo

ボタンを押すたびに結果を表しています(最初は凶でした。。。)。
update()命令でラベルの文字の更新を行っています。

おみくじ作成は以上です。
今回の内容で画像表示のエラーを経験できたことは、結果的によかったと感じている。

ではでは。

Python 6-1

こんにちは!

昔のゲーム、面白い。

GUIについて

GUIグラフィカル・ユーザ・インタフェース)を実際に扱っていきます。

list0601_1.py
Image from Gyazo

Image from Gyazo

Pythonではtkinterモジュールを用いてGUIを扱います。
2行目の「root = tkinter.Tk()」でウィンドウの部分を作っています。
3行目のmainloop()命令で画面に表示して処理を開始しています。

list0601_2.py
Image from Gyazo

Image from Gyazo

title()命令でタイトルを、geometry()命令でサイズを指定しています。

ラベルを配置する

文字列を表示するラベルを配置していきます。

list0602_1.py
Image from Gyazo

Image from Gyazo

Label()命令でラベルのテキスト内容やフォントを指定しています。
place()命令で配置場所を指定しています。

Image from Gyazo

参考で、パソコンで使用できるフォントの一覧を出力してみました。

ボタンを配置する

次はボタンです。

list0603_1.py
Image from Gyazo

Image from Gyazo

Button()命令を使用します。
書式はラベルと同様です。

list0603_2.py
Image from Gyazo

Image from Gyazo

ボタンをクリックしたときの処理を関数で定義することが可能です。
書式の中にcommand=関数を記載することで関数が実行されます。

キャンバスを使う

次はキャンバスです。

list0604_1.py
Image from Gyazo

Image from Gyazo

キャンバスはCanvas()命令で作成し、pack命令()などで配置します。

次は画像の読み込みを行おうと思いましたが、うまくいきませんでした。。。
色々と調べてみます。

今回は一旦ここまで。
ではでは。


Ruby 6-1-3

こんにちは!

ローソンにてコアラのマーチ大人買いしてきた。

配列

続きます配列。

array_join.rb
Image from Gyazo

Image from Gyazo

joinメソッドを用いて、各要素を指定の区切り文字で連結できます。

array_clone.rb
Image from Gyazo

Image from Gyazo

cloneメソッドで複製できます。
「==」演算子がtrueで、equal?メソッドがfalseの理由は、中身は同じだが実体は別物、ということです。

array_clone_shallow.rb
Image from Gyazo

Image from Gyazo

cloneメソッドによるコピーはシャローコピー(浅いコピー)と言います。
この場合、コピー先の変更がコピー元にも影響してしまいます。

array_deep_dup
Image from Gyazo

Image from Gyazo

Active Supportのdeep_dupメソッドを利用しました。
互いの変更が影響しないコピーをディープコピー(深いコピー)と言います。

array_index.rb
Image from Gyazo

Image from Gyazo

特定の要素のインデックス位置を取得するindexメソッドです。

array_include.rb
Image from Gyazo

Image from Gyazo

要素の有無を確認するincludeメソッドです。

ではでは。


Ruby 6-1-2

こんにちは!

8月も暑い。。。

配列

配列の続きです。

array_push.rb
Image from Gyazo

Image from Gyazo

配列への要素の追加や削除です。
pushメソッドで末尾に追加、popメソッドで末尾から削除、shiftメソッドで先頭から削除、unshiftメソッドで先頭に追加、です。

array_stack.rb
Image from Gyazo

Image from Gyazo

スタック(Stack)という後入れ先出しLIFO:Last In First Out)の考え方です。
pushメソッドで末尾に追加、popメソッドで末尾から取り出す、といった感じです。

array_queue.rb
Image from Gyazo

Image from Gyazo

キュー(Queue)という先入れ先出しFIFO:First In First Out)という考え方です。
こちらはpushメソッドで末尾に追加、shiftメソッドで先頭から取り出す、といった感じです。

array_insert.rb
Image from Gyazo

Image from Gyazo

deleteメソッドの使い方です。
すべての要素を破壊するclearメソッドもあります。

array_keepif.rb
Image from Gyazo

Image from Gyazo

keep_ifメソッドでより高度な条件で削除可能です。

array_concat.rb
Image from Gyazo

Image from Gyazo

配列の連結方法です。
concatメソッドは元の配列を破壊的に変更していますが、+演算子は新たな配列を生成しているため元の配列は変更されていません。

array_each_with_index.rb
Image from Gyazo

Image from Gyazo

each_with_indexメソッドで値とインデックス番号を取り出しながらループが可能になります。

array_each_slice.rb
Image from Gyazo

Image from Gyazo

要素を指定の個数で区切るeach_sliceメソッドです。

array_zip.rb
Image from Gyazo

Image from Gyazo

zipメソッドを用いて、複数の配列を束ねて処理することが可能です。

array_cycle.rb
Image from Gyazo

Image from Gyazo

cycleメソッドで指定の周回数だけループを実行することが可能です。

まだまだ続きますがここまで。

ではでは。

Python 5-3

こんにちは!

早いことに7月も終わります。

消えたアルファベットを探すゲームを作る

簡易ゲームの3つ目です。
段階を踏んで作成していきます。

list0504_1.py
Image from Gyazo

Image from Gyazo

まずはfor文で1文字ずつ出力しました。

list0504_2.py
Image from Gyazo

Image from Gyazo

3行目のchoice()命令でいずれかのアルファベットを変数rに入れています。
そして、forとifでrでないアルファベットをつなげています。

list0504_3.py
Image from Gyazo

Image from Gyazo

答えを入力し、ifで判定を下しています。

list0504_4.py
Image from Gyazo

Image from Gyazo

datetimeモジュールを用いて時間を計ります。
アルファベットをセットした時間と解答を入力した時間の差を秒数に直して計算しています。

list0504_5.py
Image from Gyazo

Image from Gyazo

アルファベットを増やし、文字列での出力に修正して完了です。

ではでは。