ものづくりブログ

ゼロからスタートして何かを作って世に出すまでのことを書くブログです.

Python学習用課題に取り組んでみた(課題)

こんにちは.

私の知人のエンジニアが新米時代に上司(先輩?)から出された課題がプログラムを学ぶ上でとても良問だったということだったので,私も取り組んでみることにしました.

やることは社員名簿作成システムです.要件は以下のとおりです.

最低でも3クラスは使ってください。
社員登録簡易アプリ。


======================================
1. 登録
2. 紹介
3. 削除
4. 更新(←時間なかったら実装しなくてもいい)
======================================
>> (ココに入力させる。


・登録項目
下記3項目を入力させてください。すべて必須項目。
適切な値以外は「不正な入力値です。」等のメッセージを表示して、再度入力させてください。
・名前
・生年月日(2000/12/23, 20001223で入力)
・給与(8桁まで ex.1000000)

・紹介
下記の形式で表示してください。

******************************************************************

ID 名前 生年月日 給与

******************************************************************

1 後畑陸坂 2000年12月23日 1,000,000
2 上森空凸 2000年12月23日 1,000,000

  • ID 登録順に連番
  • 名前
  • 生年月日 yyyy年MM月dd日で表示
  • 給与 3桁区切り

・削除
IDをキーとして削除してください。


というもの.今回は課題だけですので私が書いたコードは載せませんが,どのような考えで書くかはここに書いておきたいと思います.

まず,main関数はできるだけシンプルにしようと思います.
登録,照会,削除,編集という4種類の動作を実装する必要がありますが,それらはいずれも関数として定義してmainの中に直接記述しないように作ります.
社員情報はクラスとして定義します.その中に変数として社員ID,社員名,生年月日,給料を持たせます.
社員情報を複数持つリストを作成し,そこに社員情報を格納します.
削除と編集ではリスト内を社員IDで検索する必要がありますので,ユーザが指定した番号と全ての社員情報を突き合わせ,IDが一致した時にその社員の情報を削除または編集するという方法を取ります.
編集は削除と登録の組み合わせなので,それぞれの関数を流用します.
生年月日と年収は入力規制を設けておかしな入力だった場合は再入力するよう促します.


次回は私が書いたコードを掲載し,それについて解説していきます.その次は知人のエンジニアに添削してもらった結果を書こうと思います.結構考えることが多くて良い勉強になりますよ.



参考文献
特になし

Raspberry Piで無線LANの接続が切れたとき自動で再接続させる方法

 

こんにちは.

 

前回の記事で,部屋の使用状況をモニタリングするデバイスの評価結果をお知らせしました.

その中で,無線LANへの自動再接続の課題がありましたが,今回はその方法を解説します.

 

まずはwicd-cursesというアプリケーションをインストールします.

 

sudo apt-get update

sudo apt-get install wicd-curses

 

インストールが完了したら実行します.

 

sudo wicd-curses

 

すると以下の様な画面が表示されます.

 

f:id:daisukekmr:20150208173730p:plain

 

自動的に今接続可能な無線を拾ってリストアップしてくれるので,その中から接続したいSSIDを選んで右キーを押し,設定画面に入ります(以下).

 

f:id:daisukekmr:20150208174729p:plain

 

ここでAutomatically connect to this networkを選択し,Spaceキーでチェックを入れれば接続が切れても自動で再接続されるはずです.

あとはKEYのところにルータ側で設定しているKEYを入力し,F10を押せばOKです.

 

アクセスできる無線一覧の画面に戻るので,「Shift + q」を押してwicd-cursesを終了します. 

 

ラズパイを再起動して,無事指定した無線ネットワークに接続されていれば成功です.念のため,ルータ側を再起動したときにラズパイが自動で再接続するか確かめてみましょう.

 

今回は再接続のためにwicd-cursesを使用しましたが,普通にwifi設定にも便利に使えそうですね.

 

ただし,私が設定を行った時は,WEP接続ではうまく行かなかったので,WPAでの接続が出来る環境でしかつかえなさそうです.WEP接続の際は接続しようとすると下記のような文字列がしばらく表示され,接続に失敗しました.このあたりの情報あれば教えて下さい.

 


Validating authentication...

 

 

 

参考文献 

[1]nWorld「Raspberry Pi無線LAN自動再接続」(http://firtel.blogspot.jp/2014/08/raspberrypi-wifi-autoreconnect.html)

Pythonの学習に役立つサイト

こんにちは.

前回の記事で,Pythonの実行方法と基本の構文までは学びました.あとはどのような機能があるか具体例を学びながらひたすら書いていくしかないのですが,その時に役立つサイトをいくつか紹介したいと思います.



1. Python-izm 基礎編

基礎編 | Python-izm


私が一番使っているサイトです.この中の基礎編をひと通り自分で書いてみるだけで,少しPythonが分かった気分になります.
文字列の説明から始まり,インポートの話までほぼ引っかかることなく学習を進められると思いますが,いくつかハマったところとか気になったところがあったので羅列しておきます.

  • 序盤で説明なくifやforが出てきます.これらは途中できちんと説明されますので,序盤に出てくる際はスルーしてしまって問題無いです.
  • if文の説明のところで,print unicode("文字列")という表記が出てくるのですが,このままではエラーを吐きます.print unicode("文字列", 'utf-8')と表記することで解決しました.
  • defで関数を作成するケースがたくさん出てくるのですが,この説明は応用編で出てきます.このブログの前回の記事でも少し出てきましたが,よく使う処理を分離して記述しておいて,使うときに呼び出す機能,というイメージです.

これを最後まで学べばなんとなく基本の機能や構文については身につくと思います.



2. Python-izm 応用編

応用編 | Python-izm


上記のサイトの応用編です.ここは基礎編より少しむずかしいので,ところどころ理解しづらいところがあるかもしれません.いくつかハマったときに役立ちそうなサイトを見つけましたので,紹介します.

  • クラスについて:

http://www.acroquest.co.jp/webworkshop/java_course/J_lecture09.html

スーパークラス(親クラス)とは - IT用語辞典 e-Words

環境変数(environment variables)とは - IT用語辞典 e-Words

フォルダやファイルを「再帰的に削除」するって、どういう意味ですか?... - Yahoo!知恵袋


また,このサイトはWindows向けに書かれているので,ディレクトリなどがWindowsのものになっています.Macで開発されている方は下記のケースで注意が必要です.

  • パッケージ化のところで,ディレクトリをC:/ではなく/Users/ユーザ名/などに読み替える必要があります.もし難しければ一旦ここは読み飛ばしても大丈夫だと思います.
  • 設定ファイルのところでunicodeが出てきますが,ここもエラーが出ます.対処法は上述のものと同じです.


その他の注意点もまとめておきます.

  • zipファイルのところで,サンプルで3個ファイルを作成してそれらを圧縮しますが,ある程度中身のあるファイルを作成しておかないと圧縮率の差がわかりません.
  • ファイルの読み書きの項目の中で,文字コード指定のところはうまくいきませんでした.ここは後で調べて解決でき次第記事にします.
  • メール送信の項目は最近のメールはセキュリティが厳しいのでこれだけで実行するのは難しそうです.この方法は別途調べて記事にしようと思います.
  • HTML,XML,およびJSONの解析はこのサンプル通りで動きますが,詳細にどのような処理を行っているかはわかりづらいので,これらは別途記事を書こうと思います.



3. 公式のDocuments

根本的なことを調べたいときに一番良いのは公式の文書を読むことです.基礎なので一般的に書いているせいで非常に難しいですが,このあたりを理解したほうが応用が聞くので後々楽になるはずです.

3.10.0b2 Documentation

Our Documentation | Python.org


これくらいで基本的なことはある程度網羅されていると思いますので,今後は具体的にやりたいことを実現するために学んでいきたいと思います.



参考文献
本文中に記載