Ruby 6-1-5
こんにちは!
初めてのサンガスタジアム、臨場感も高く良いスタジアムやった!!
配列
そろそろ配列終わります。
並び順を逆にするreverseメソッドです。
一般的な昇順ソートを行うsortメソッドです。
文字列と数値など、互いに大小比較できないものはエラーとなります。
sortメソッドにブロックを渡すことで独自のルールでの並び替えが可能です。
ブロック構文を用いることでハッシュ配列をソートすることが可能です。
shuffleメソッドでランダムのソートも可能です。
maxメソッドとminメソッドで要素を比較します。
数値であれば大小、文字列であれば辞書順に比較します。
sumメソッドで要素値の合計を求めます。
配列を順に処理するreduceメソッド、今回は数値の総積を求めています。
group_byメソッドで、戻り値が等しいものを同じグループとして分割できます。
条件によって2分割するpartitionメソッドです。
戻り値の値によって配列を分割するchunkメソッドです。
正規表現に合致するかどうかを分割の基準にしています。
配列の多種多様なメソッドを確認いたしました。
次回からはセットに入っていきます。
ではでは。
Ruby 6-1-4
こんにちは!
今朝はまだ過ごしやすい。
配列
配列の続きです。
配列の検索結果を要素の値で返すfindメソッドです。
合致した要素をすべて取得する場合はfind_allメソッドを使用します。
合致しないものを取得するrejectメソッドもあります。
正規表現パターンを検索するgrepメソッドと、合致しない場合のgrep_vメソッドです。
grepメソッドは、より正確には引数と要素値を「===」演算子で比較するメソッドです。
nil以外の要素を取得するcompactメソッドです。
配列の要素を順番に加工するmapメソッドです。
すべてが真か判定するall?メソッド、いずれかが真か判定するany?メソッド、
1つだけが真か判定するone?メソッド、すべてが偽か判定するnone?メソッド、があります。
all?メソッドなどには、ブロックを省略する構文や正規表現を渡すパターンもあります。
じっくりいきましょう。
ではでは。
Python 6-2
こんにちは!
久しぶりにエラーと格闘した。。。
キャンバスを使う
前回の続きです。
同じフォルダ内に画像を置いていても読み込んでくれませんでした。
そこで、file='ファイル名'としていましたが、直接パスを記載すると解決しました。
ファイル名で拾ってくれなかったのは、おそらく作業ドライブの問題かと思いますが、確定的なことは言えません。
気を取り直して残りに取り掛かります。
おみくじを引くソフトを作る
GUIの基礎前半の最後として、おみくじを作成します。
まずはサンプルの巫女さんを表示しました。
4行目のresizable()命令でウインドウサイズの変更を制限しています。
ラベルとボタンを配置しました。
最後におみくじ機能の実装です。
ボタンを押すたびに結果を表しています(最初は凶でした。。。)。
update()命令でラベルの文字の更新を行っています。
おみくじ作成は以上です。
今回の内容で画像表示のエラーを経験できたことは、結果的によかったと感じている。
ではでは。
Python 6-1
こんにちは!
昔のゲーム、面白い。
GUIについて
GUI(グラフィカル・ユーザ・インタフェース)を実際に扱っていきます。
Pythonではtkinterモジュールを用いてGUIを扱います。
2行目の「root = tkinter.Tk()」でウィンドウの部分を作っています。
3行目のmainloop()命令で画面に表示して処理を開始しています。
title()命令でタイトルを、geometry()命令でサイズを指定しています。
ラベルを配置する
文字列を表示するラベルを配置していきます。
Label()命令でラベルのテキスト内容やフォントを指定しています。
place()命令で配置場所を指定しています。
参考で、パソコンで使用できるフォントの一覧を出力してみました。
ボタンを配置する
次はボタンです。
Button()命令を使用します。
書式はラベルと同様です。
ボタンをクリックしたときの処理を関数で定義することが可能です。
書式の中にcommand=関数を記載することで関数が実行されます。
キャンバスを使う
次はキャンバスです。
キャンバスはCanvas()命令で作成し、pack命令()などで配置します。
次は画像の読み込みを行おうと思いましたが、うまくいきませんでした。。。
色々と調べてみます。
今回は一旦ここまで。
ではでは。
Ruby 6-1-3
こんにちは!
配列
続きます配列。
joinメソッドを用いて、各要素を指定の区切り文字で連結できます。
cloneメソッドで複製できます。
「==」演算子がtrueで、equal?メソッドがfalseの理由は、中身は同じだが実体は別物、ということです。
cloneメソッドによるコピーはシャローコピー(浅いコピー)と言います。
この場合、コピー先の変更がコピー元にも影響してしまいます。
Active Supportのdeep_dupメソッドを利用しました。
互いの変更が影響しないコピーをディープコピー(深いコピー)と言います。
特定の要素のインデックス位置を取得するindexメソッドです。
要素の有無を確認するincludeメソッドです。
ではでは。
Ruby 6-1-2
こんにちは!
8月も暑い。。。
配列
配列の続きです。
配列への要素の追加や削除です。
pushメソッドで末尾に追加、popメソッドで末尾から削除、shiftメソッドで先頭から削除、unshiftメソッドで先頭に追加、です。
スタック(Stack)という後入れ先出し(LIFO:Last In First Out)の考え方です。
pushメソッドで末尾に追加、popメソッドで末尾から取り出す、といった感じです。
キュー(Queue)という先入れ先出し(FIFO:First In First Out)という考え方です。
こちらはpushメソッドで末尾に追加、shiftメソッドで先頭から取り出す、といった感じです。
deleteメソッドの使い方です。
すべての要素を破壊するclearメソッドもあります。
keep_ifメソッドでより高度な条件で削除可能です。
配列の連結方法です。
concatメソッドは元の配列を破壊的に変更していますが、+演算子は新たな配列を生成しているため元の配列は変更されていません。
each_with_indexメソッドで値とインデックス番号を取り出しながらループが可能になります。
要素を指定の個数で区切るeach_sliceメソッドです。
zipメソッドを用いて、複数の配列を束ねて処理することが可能です。
cycleメソッドで指定の周回数だけループを実行することが可能です。
まだまだ続きますがここまで。
ではでは。
Python 5-3
こんにちは!
早いことに7月も終わります。
消えたアルファベットを探すゲームを作る
簡易ゲームの3つ目です。
段階を踏んで作成していきます。
まずはfor文で1文字ずつ出力しました。
3行目のchoice()命令でいずれかのアルファベットを変数rに入れています。
そして、forとifでrでないアルファベットをつなげています。
答えを入力し、ifで判定を下しています。
datetimeモジュールを用いて時間を計ります。
アルファベットをセットした時間と解答を入力した時間の差を秒数に直して計算しています。
アルファベットを増やし、文字列での出力に修正して完了です。
ではでは。