Code Monkey home page Code Monkey logo

learning-python's People

Contributors

domanthan avatar dongri avatar nicolas-lixiaodong avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

learning-python's Issues

宿題026-栄冠への道、次のステップを備えよう

栄冠への道、次のステップを備えよう

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

言語を覚えたのは、小学校を卒業したとえよう。
小説家になれるかどうかは、これからだ。

プログラミング言語を学んだのは、たた喋るれ子になったに過ぎず、この強烈な道具を使って、
どんな小説を書こうかは、ほかの分野であれば、言語はコミュニケーション。

要件説明

WEB フレームワーク: Flask
インフラ自動化: Fabric
テスト pytest, Tox
暗号化 pycrypto , hashlib
グラフィック(turtle, Tkinter)
データ解析(numpy, pandas,
matplotlib),
キューイングシステム(ZeroMQ, Celery)、
非同期処理(asyncio)
データ可視化 juypter notebook

AI:
Tensorflow
scikit-learn : Machine Learning

reference

宿題学習ポイント(Concept)

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題029-Unittest, pytestの扱い

Unittest, pytestの扱い

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

要件説明

reference

宿題学習ポイント(Concept)

https://docs.pytest.org/en/latest/

https://docs.pytest.org/en/latest/getting-started.html#getstarted

PDF:
https://media.readthedocs.org/pdf/pytest/latest/pytest.pdf

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題018-高階関数と遅延評価

title

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

要件説明

reference

宿題学習ポイント(Concept)

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題013-Lambda式、匿名関数のこと

Lambda式、匿名関数のこと

© Gridscale Inc. http://www.gridscale.com

前振り

Pythonはマルチパラダイム言語です。関数型オブジェクトが存在します。
ラムダ式は式を名前のない関数オブジェクトに変関数式のことです。
一つの式のためにわざわざ関数を定義したくない場合、Lamda式を使うのが有効でしょ。
でも、あまりにも乱用すると、ソースコードがあえて読みづらくなりますので、ほどほど使いましょう。

■ 関数ですから、パラメータを持つことができます。
■ 式ですから、この関数の中には一つの式しか表現できない。
Keywork: lambda

x + y         ------>  lambda (x,y) : x + y
x*2 + y*2  ----->  lambda (x,y) : x*x + y*y

要件説明

挨拶できるラムダ式を作ってくだい。
xxと渡したら、と出力。 こんにちは、xxさん。

「田中さん、こんにち」はでもいいけどね。

reference

宿題学習ポイント(Concept)

https://docs.python.jp/3/reference/expressions.html#lambda

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題005-虫眼鏡を使って、データモデルを観察する

虫眼鏡を使って、データモデルを観察する

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

公園でとった昆虫や、虫を観察したことはありますか。好奇心旺盛なこともならきっと、虫眼鏡で観察するでしょう。観察とは、ある対象に対して様々な側面をしますが、五感で観察できる範囲なら、
色、匂い、大きさ、触って見ての感触、鳴き声、大胆な子なら、食べてみるのも一つの観察手段。
科学的な研究なら、対象を解剖して調べる必要もあります。

そうやって、ものに対する理解を深めていくでしょ。

プログラミングにおいても、オブジェクトに対する観察は言語に対する理解を深くすることは疑いようがない。 オブジェクトの性質が深く知れば、知るほど、プログラミング能力は高まるでしょ。

  • 振る舞いの事前予測
  • 奇妙な動き、バグの原因究明
  • ソースコードの読解力向上
  • より高度な活用

では、この宿題を通して、簡易なオブジェクト虫眼鏡を作って見ましょう。
何より、オブジェクトを観察する習慣を身につけって欲しいです。
必要であれば、オブジェクト虫眼鏡をどんどん改善していくことも可能です。

要件説明

クラス定義

class Magnifier :
    def observe(obj):

class Abc:
     name = "Abc"
     age = 12
     country = "ジオン公国"
     def say() :
           #何かを出力して...

クラス機能

任意のオブジェクトに対して、下記の項目をレポートします。

  • データ型 --- 型の判定 type()
  • id       --- 同一性判定 id(), is 判定
  • 関数かどうか  --- 呼び出し可能かの判断 , isinstance(), callable()
  • オボジェクトの持ち物  --- Javaのリフレクション的な、 vars()

出力:下記のコード出力

magnifier = Magnifier()
magnifier.observe("abc")
magnifier.observe(magnifier.observe)
obj = Abc()
magnifier.observe(obj)
## リストを観察
...
## Mapを観察
...
## 集合を観察
...

reference

宿題学習ポイント(Concept)

https://docs.python.org/ja/3/reference/datamodel.html
pythonの組み込み関数:
https://docs.python.jp/3/library/functions.html#type

参考実装

https://github.com/gridscaleinc/Learning-Python/blob/master/domanthan/Less005/Less005.py

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題020-I/O(ファイル操作)

title

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

要件説明

reference

宿題学習ポイント(Concept)

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題024-関数型言語とLamda式

関数型言語とLamda式

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

Pythonはマルチパラダイム言語です。関数型プログラミングを行うことは可能です。
難しい呼び方である関数型プログラミングはなんの為でしょうか。
1)形式的に証明可能性
  これは実用性はない。覚えなくでいい

2)モジュラー性
  問題を細かく分割し、定義する。
  
3)デバグやテストの簡単さ
  関数単位をテストし、正しくすれば、プログラムの品質は高くなる。

4)高階関数
  関数を作る関数ができる。
  関数をパラメータにすることできる。
  これによって、プログラムの再利用性が高まる。

5)Lambda式
  def文がなくても、関数を定義でき、呼び出すことが可能。

6 ) operator モジュール
  

要件説明

reference

宿題学習ポイント(Concept)

https://docs.python.jp/3/howto/functional.html

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題010-クラス換えで好きな子の隣に座りたい、データタイプの操作 

クラス換えで好きな子の隣に座りたい、データタイプの操作

© Gridscale Inc. http://www.gridscale.com

前振り

思春期の中学生たちはクラス換えで良い席を取りたいと思っている。。。。
しかし、苦手な人にはなるべく遠ざけたいでしょう。

要件説明

  あるクラスのメンバ構成はこうなっている。

  A1,A2,A3...........A8
  B1,B2,B3............B8
  C1,C2,C3...........C8
  D1,D2,D3.........D7

B3はA8が好きですが、C3は苦手だ。 優しいあなたがクラス換え担当なら、次の席順はどうしましょうか?プログラムで一つの案を出してみてください。

  なお、隣とは前、後、右、左、斜め右、斜め左のいずれです。

簡単なフローを提示します。
1)4つのリストを一つに纏めます。
2)リストの順番をバラバラに変えます。
3)もう一度4列の分割します。
4)B3の席順を確認します。
5)A8をB3の隣に移動させます。
6)C3の席をチェックします。
  C3がB3の近くにいるなら、遠く移動させます。

reference

宿題学習ポイント(Concept)

プログラムはなるべくListのJoin,Insert,Remove,など操作を駆使してほしい。

参考実装

https://github.com/gridscaleinc/Learning-Python/blob/master/domanthan/Less010/Less010.py

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題012-生産者と消費者、Generatorと数列。

生産者と消費者、Generatorと数例

© Gridscale Inc. http://www.gridscale.com

前振り

一般の家庭は様々な消耗品を使うでしょ。食料はその代表です。しかし、誰も一年の食料を一括購入して、その後ゆっくり賞味するようなことはしないでしょ。一年の食料を保存する場所や、お金の使い方は非効率だからです。ちょっとずつ買ってきて、足りなくなたらまた買うのが得策でしょう

プログラムを書くのも同じです。大きなリストは代わりにGeneratorを使うのメモリの節約になります。
ちょっとずつ生産して、ちょっとずつ消費することで、Generatorはそういう**の元で考案されました。

要件説明

generatorはpythonのYield句を利用してiteratorを生成することです。
イメージを掴むために、まず下記の練習をしてみてください。

練習:

def my_generator():
    yield "あ"
    yield "い”
    yield "う”
 yield "え"
    yield "お"

gen = my_generator()
gen.__next__()
gen.__next__()
gen.__next__()
gen.__next__()

問題:
では、generatorを利用して、フィボナッチ数例の整数をひたすら1秒間隔でprintしてください。
フィボナッチ数列とは A(n+1) = A(n)+A(n-1)を満たす数列のことです。

 1、1、2、3、5、、、、

reference

宿題学習ポイント(Concept)

Generatorを提案されたPEP,一読する価値がある。
https://www.python.org/dev/peps/pep-0255/

参考実装

https://github.com/gridscaleinc/Learning-Python/blob/master/domanthan/Less012/Less012.py

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題007-人生の足跡を辿ってみよう。タプルは便利すぎる

人生の足跡を辿ってみよう。タプルは便利すぎる

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

 Tupleとはn-組のこと。
 https://ja.wikipedia.org/wiki/%E3%82%BF%E3%83%97%E3%83%AB
 形式が整えっているN個のデータから一つのN-Tupleを構成する。
 Tupleにある要素は必ず同じデータタイプでなくでも良い。

    1-Tuple  (A,)                  後ろに[,]があるのを注目してください。
    2-Tuple (A,B)
    3-Tuple (A,B,C)
    
    数学や科学情報に、様々なTupleがある。
 (ID, Password)
   座標 (x,y), (x,y,z)
 地理情報 (経度、緯度)

Tupleのパックとアンパック

  • パック :バラバラの項目を一つのTupleにする。
              t = (1,2,3)  
  • アンパック: Tupleをバラバラの変数にマッピング。
             a,b,c = t

要件説明

 Tupleを利用して、貴方の人生の軌跡を辿ってみてはいかがでしょうか。
 人生は生まれから始まり、その後就学、就職など様々なステージを踏むのが一般でしょ。
 一連の(時間、ステージ、場所)から人生を歩んできたではないでしょうか。
 場所は名称と地理情報で表せれば、地図上で人生の軌跡を描くのも難しい事ではないです。

 では、貴方の人生を下記の様に出力するプログラムを作成してみてください。

私の人生の軌跡:
 -----------------------------------------------------------------
 1969年     誕生     **の小さい村      地理位置: ( 111 , 222 )
 1976年     小学校     XXX小学校      地理位置: ( 222 , 333 )
 1988年     大学校     **XXX大学      地理位置: ( 333 , 22 )
 1996年     来日     ABC株式会社      地理位置: ( 322 , 23 )

reference

宿題学習ポイント(Concept)

https://docs.python.org/ja/3/library/stdtypes.html#sequence-types-list-tuple-range

https://docs.python.jp/3/tutorial/datastructures.html#tuples-and-sequences

参考実装

https://github.com/gridscaleinc/Learning-Python/blob/master/domanthan/Less007/Less007.py

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題017-エラー処理

title

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

要件説明

reference

宿題学習ポイント(Concept)

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題023-ちょっと高度なプログラミン概念の理解−metaclass

title

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

要件説明

reference

宿題学習ポイント(Concept)

https://docs.python.org/ja/3/reference/datamodel.html#customizing-class-creation

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題011-あいうえお、ループ条件とデータタイプ

あいうえお、ループ条件とデータタイプ

前振り

 ラーメン屋の前に並んだ経験は誰でもあるでしょ。先にきた人が先に食べるのは必然でしょう?
 先にきた人があとで店を出るのはあるにしても。店員からすれば、行列は処理対象のリストです。
 このリストの長さによって、売り上げを増やしてくのです。
 

要件説明

 ループに関して、pythonのSequence型(List, Tuple, map, set)に緊密に関わるでしょ。
 ちなみに、文字列もSequenceで知っているでしょうか?
下記のコードはどんな出力になるでしょうか?
 

 for i in "アイウエオ":
         print i

「あ、い、う、え、お」をいろんな形、順番で出力してみましょう。

  • 左か右
  • 真ん中から最後まで辿って、先頭に戻る
  • ランダムな順番で出力
  • 右 → 左(逆順)
  • [おいあうえ] を カタカナに変換して出力

出力:
左から右へ:
あ, い, う, え, お,

真ん中から:
い, う, え, お, あ,
う, え, お, あ, い,
え, お, あ, い, う,
お, あ, い, う, え,
あ, い, う, え, お,

random:
う, あ, お, え, い,
い, あ, お, う, え,
お, え, い, う, あ,
い, お, え, あ, う,
あ, え, い, う, お,

Reversed:
お, え, う, い, あ,
カタカナ変換:
エ, オ, イ, ウ, ア,

reference

宿題学習ポイント(Concept)

https://docs.python.org/ja/3.7/library/stdtypes.html#sequence-types-list-tuple-range

特にRange型を勉強しましょう。
https://docs.python.org/ja/3.7/library/stdtypes.html#range

参考実装

https://github.com/gridscaleinc/Learning-Python/blob/master/domanthan/Less011/Less011.py

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

   --src  
     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題022-DB処理

title

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

要件説明

reference

宿題学習ポイント(Concept)

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題016-実行順序

title

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

要件説明

reference

宿題学習ポイント(Concept)

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題015-地球一年の移動距離、速度速度、自転速度を計算、クラスの定義を練習

地球一年の移動距離、速度速度、自転速度を計算、クラスの定義を練習

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

地球はとても孤独なんです。生き物が生息している惑星は他に知らないからです。
来る日も来る日も、地球は太陽を中心に回り続けているが、一年間地球が動いた距離はわかりますか。

要件説明

. 地球と太陽の間の距離は 149,600,000 km
. 地球の半径 6371 km
. 太陽の中心を円心として、地球は一年間一つの円を描く。
その円の周長を計算しましょう。

1)まず、円(Circle)というクラスを定義
半径という属性をもち、周長を計算できるメソッドをもつ。

2)惑星(Planet)というクラスを定義
  公転周期という属性を持ち

3)地球(Globe)というクラスを定義
  条件: 円、惑星クラスを継承してください。
      コンストラクター init()をしっかり定義してください。

  属性: 自転周期 (ヒント: 一日何秒?)
  メソッド: 自転速度を計算 (rotation)
  メソッド: 公転速度を計算 (revolution)

結果:
地球は一年間 : 939488000.0 kmを太陽の周りで回ってます。
地球の公転速度は : 29.79 km/s
地球の自伝速度は : 0.46 km/s

reference

宿題学習ポイント(Concept)

クラスの定義:
https://docs.python.jp/3/tutorial/classes.html#class-definition-syntax

クラスの多重継承:
https://docs.python.jp/3/tutorial/classes.html#multiple-inheritance

クラス定義の注意点:
https://docs.python.jp/3/tutorial/classes.html#random-remarks

super()関数の呼び出し方:
https://docs.python.jp/3/library/functions.html#super

参考実装

https://github.com/gridscaleinc/Learning-Python/blob/master/domanthan/Less015/Less015.py

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題002-お母さん,を100回叫ぶ。

お母さん、を100回叫ぶ

© 2018 Gridscale Inc. http://www.gridscale.com

みなさん

私の母はもう80の年寄りですが、父が6年ほど前にこの世を去ったです。
今母は私の兄弟と同居していますが、私とは遠く離れていて、なかなか会えない状態です。
この間、夢の中母親の姿が現れて、思わず会いに行きたくなった今の気持ちです。

お母さんじゃなくでもいいですが、最愛な人の名前を100回呼ぶプログラムを書いて見ましょう。

for i in 1から100まで、print(”お母さんーーー!”)を繰り返す。

Python的な書き方はありますので、ここを参考して見て、宿題を完成させてください。
https://docs.python.org/ja/3.7/reference/compound_stmts.html#the-for-statement

#!/usr/bin/env python
# -*- coding: utf-8 -*-
message="お母さん"
for i in range(100):
    print(message)

coding行を注目してください。非ASCII文字扱い際にこれが必要。

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

   --src  
        ---- 「ご自分のgithubid]  
              ---   less001  
                    -- file001.py  
                    -- evidence001.txt  

宿題003-コーディングスタイルー空白から始まる。

コーディングスタイルー空白から始まる。

 空白の使い方が、プログラマーの素質を見えさせる。

要件説明

 Javaを勉強し始めた時に、 Sun MicrosystemsのJavaオフィシャルコードスタイル説明ページには
 空白をどの様に使うのか大き文書幅を取りました。私もそこから少々感銘を受けました。
 コンパイルの結果、実行結果に関係なくても、適所に空白を入れるのはものすごく大事なこだと。

 大半なプログラミング言語は、Whitespaceはコンパイルエラーにならないが、Pythonはその例外です。
 美しくソースコードを書くことを文法まで織り込むのは私が知っている限り、Pythonだけでした。
 Referenceのリンクの章節を読んで、美しいPythonコード書くの基本を覚えましょう。
 特にインデントについて、間違ってしまうと、コンパイルエラーになってしまうので、入念に読んでください。

 下記の要素を入れて、練習プログラムを書いて見てください。

  • 1. コメントの書き方
  • 2. 複数物理行を一論理行に繋ぐ方法
  • 3. インデントはどの様に決められるのか?
  • 4. リテラル

reference

宿題学習ポイント(Concept)

https://docs.python.org/ja/3/reference/lexical_analysis.html
2.1.8. インデント に注目してください。

Code StyleのためのPEPまで作成した、よほど重視していると思う:
https://www.python.org/dev/peps/pep-0008/

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

   --src  
        ---- 「ご自分のgithubid]  
              ---   less001  
                    -- file001.py  
                    -- evidence001.txt  

宿題014-数値計算、彼女と出会うまで 

数値計算、彼女と出会うまで 

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

未来に出会うかもしれない彼女はきっと何処かに向かって出発しているでしょう。出会うかどうかはあなた次第です。遅すぎず、早すぎずタイミングは重要でありましょう。
さ、今出発するときかもしれない。

要件説明

AIを学びたいなら、数値計算は避けられないでしょ、少しづつ、数値計算を慣れていきましょう。
ゲーム開発にはよくある計算パターンですが、場所、方向、移動速度を扱う計算を下記の例から試してみましょう。

問題

彼女は今 座標(10, 5000)にいるが、Vector (1, -0.5)方向に向かって、秒速3メートルの速度で歩いてる。 
貴方は今、座標(-1000, -1000)いる所として、Vector(1, 0.5)方向に向かって、計画的に彼女と出会うチャンスを掴みたいと思うこととしよう。
さ、貴方はどの速さで歩くべきでしょうか。 速すぎず、遅すぎずのが重要だから。

数学の復習

クラス定義

     class Vector :  
         # 1. Constructor (x,y)
         # 2. method  multiply (a)  Vectorの掛け算 
    #   (x, y) * a = (ax, ay) とする
         # 3. method normalize() 正規化 (長さが1のVectorにする)
                     正規化(a, b) = (a/sqrt(a*a+b*b)), b/sqrt(a*a + b*b))

         #4. method add 
                     (a, b) + (c, d) = (a+c, b+d)
         # 5. method sub
                      (a, b) - (c, d) = (a, b) + (c, d)*-1 = (a, b) + (-c, -d) = (a-c, b-d)

       座標も、方向も、速度(Velocity)がVectorで表現できます。
       position1 = Vector(100,100) 
       direction = Vector(1,-0.5)
       velocity =  Vector(1,-0.5).normalize()*speed .   (speedは秒速)

       t秒後の場所は position1 + velocity * t で計算できる。
  position1 + v1*t = position2 + v2*t  が成立すれば、出会うことはできるでしょう。

       直線と直線の交点を求める方法はここを参考してください:
  https://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect
  
       cross product = v × w = vx wy − vy wx
  
  交点求める式:
  p + t r = q + u s
  
  t = (q − p) × s / (r × s)
  u = (p − q) × r / (s × r)

  である





reference

宿題学習ポイント(Concept)

https://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

   --src  
     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題019-マルチスレードと非同期処理

title

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

要件説明

reference

宿題学習ポイント(Concept)

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題027-Messになる前に、Pythonのパケージ管理

Messになる前に、Pythonのパケージ管理

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

なんでもそうですが、自分自身について知っているのが重要だと思います。
今までいろんな勉強をしてきたけど、いろんなパケージがインストールされて、それはどこに?
どんなバージョンが入ってるの?をキッチンと把握しないと、一体自分のプログラムはどんな環境にて実行されているのかわからなくなると思う。
そして、正しいプログラムが作成されても、環境が違ければ、いい結果が出ないでしょう。

要件説明

 自分のパスコンにどんなpythonライブラリがインストールされているのか?
 下記のコマンドを打ってみて。

  • python3 --version
  • pip3 list  インストールされているパケージをリストアップ
  • pip3 freeze インストールされているパケージのバージョン情報
  • pip3 show numpy 個別パケージの詳細情報
  • pip3 check numpy 依存関係が崩れてないか?
  • pip3 search numpy WebにあるPythonライブラリリポジトリに該当パケージの関連ライブラリを一覧

なお、本勉強はpython3の利用が前提なので、pip3のコマンドでパケージ管理をします。
python2を利用している方は、pip3をpipに置き換えてください。

reference

宿題学習ポイント(Concept)

https://pip.pypa.io/en/stable/user_guide/#id8

参考実装

なし

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題025-ライブラリマスター

title

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

要件説明

reference

宿題学習ポイント(Concept)

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題006-AIとの相性、リスト内包表記による林檎値札作成 

AIとの相性、リスト内包表記による林檎値札作成

前振り

PythonとAIの相性が良いことに理由があります。
リスト、集合、マップの内包表記はその一つかも知れない。

リストの内包表記は言葉が難しそうイメージがありますが、リストやIteratorから新しいリストを作成する表記のことです。

例: 0から100までの整数にある3の倍数のリストはこれです。

 [i for i in range(100) if i%3==0]
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

こうして、自然言語に一歩近ついた気がします。

要件説明

あなたが果樹園園主なら、どうやって林檎に値段をつけるかに興味あるはずです。
1g=1円で値段を付けでもいいですが、大きい林檎と小さい林檎を同じ値段売るのでは、商売が上手いと言えないでしょう。

代わりに、大きさにプレミアムを付けてはどうでしょうか。
売値 = 重さ + 重さの平方根

問題

林檎の重さ: [98,105, 201,455,333,253,309]

消費税込みの林檎値段リストを 1g=1円の場合と大きさにプレミアムをつける場合をそれぞれ表示してください。
また、それぞれの売り上げを計算してください。
プレミアムをつける事で、増益率はいくらくらいでしょうか?

hint: 消費税計算の内包表記はこれです。

$ [int(i*1.08) for i in [98,105, 201,455,333,253,309]]
[105, 113, 217, 491, 359, 273, 333]

reference

宿題学習ポイント(Concept)

言語リファレンス:
https://docs.python.org/ja/3/reference/expressions.html#displays-for-lists-sets-and-dictionaries
公式Tutorial:
https://docs.python.org/ja/3/tutorial/datastructures.html#list-comprehensions

参考実装

https://github.com/gridscaleinc/Learning-Python/blob/master/domanthan/Less006/Less006.py

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題028-Flask、PythonでWebアプリケーション(頭だし)

Flask、PythonでWebアプリケーション(頭だし)

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

Webアプリケーション開発は大きなテーマ、宿題一つでは無理ですが、こういうフレームワークがあるのかを知るくらいのことだけをやってみましょう。

要件説明

Flask を使って、Helloworld 的なWebアプリケーションを作ってみる。

reference

宿題学習ポイント(Concept)

Flaskインストール
http://flask.pocoo.org/docs/1.0/installation/#installation
QuickStart:
http://flask.pocoo.org/docs/1.0/quickstart/#quickstart

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題030-Flask , Webアプリケーション−2

Flask , Webアプリケーション−2

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

要件説明

reference

宿題学習ポイント(Concept)

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題008-郵便番号より住所自動補助(マップ若しくは辞書) 

郵便番号より住所自動補助(マップ若しくは辞書)

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

辞書は人類の文明発展大きな効用があったと思います。知識を体系的に整理され、容易にアクセスできるからです。図書館や倉庫など、大量に在庫を抱えている場所では、もの(オブジェクト)の索引なければ、混乱はすぐそこでしょ。

実は我が家ではこんなトラブルが頻発している。本とか服とか、欲しい時にすぐに出したいですが、
中々見つからない時があります。服を一着づつ出して、10着目にやっと欲しい服が見つける。
そんな時、我が家の服のHashmapがあればなと思う時があります。。。

要件説明

Mapという言葉は、地図の意味があるが、本宿題では地図の話ではない。
マップの数学の意味は ある情報 A から Bを導出する様な、2要素間の固定的な関係のことです。

A1 -------> B1
A2 -------> B2
A3 -------> B3
A4 -------> B4

ソフトウェアにおいてのMapのユースケースは、混雑なオブジェクト群にそろぞれにユニークなIDを付けて、容易に識別、陳列、探し出す様にすることです。
郵便番号はその一例です。

        "124-0022"------->"東京都葛飾区奥戸",
        "143-0001"------->"東京都大田区東海",
        "133-0073"-------> "東京都江戸川区鹿骨",

問題:

 郵便番号と都道府県、市町村の関係を表し、ハッシュマップを定義して、下記の機能を実現してください。

 1)郵便番号から、都道府県市町村を出力機能
 2)都道府県市町村情報からその郵便番号を出力する機能

reference

宿題学習ポイント(Concept)

https://docs.python.jp/3/library/stdtypes.html#mapping-types-dict

参考実装

https://github.com/gridscaleinc/Learning-Python/blob/master/domanthan/Less008/Less008.py

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題004-家族名簿(データタイプ)

家族名簿作りから、データタイプを学ぶ

© 2018 Gridscale Inc. http://www.gridscale.com

要件説明

今デニーズに執筆しています。家族を揃って、デニーズでモーニングセットを食べているところです。

Pythonには様々なデータタイプありますが、まず初歩なデータタイプを学びましょう。

  • 1. 文字列
  • 2. 整数
  • 3. 日付

問題:

下記の様に自分の家族メンバーリストを出力してください。

出力日: 2018-09-01
--------------------------------------
本人  ドム           45才      
長女  チェルシー     12才
愛犬  ドフィー     2才

ヒント: pythonの日付は datetimeモジュールにある。

import datetime
print datetime.date.today()

reference

宿題学習ポイント(Concept)

データタイプ:

参考実装

https://github.com/gridscaleinc/Learning-Python/blob/master/domanthan/Less004/Less004.py

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題001-環境を整えましょう

Python勉強の準備リスト

1.Anacondaインストール

Anacondaとは何?

AnacondaはPythonとそのよく利用されるライブラリ(パッケージ)を最初からまとめて入れてくれるアプリケーション。
Python本体とライブラリを個別にインストールするのに比べ、環境が確実に完成するというメリットがある。
逆に、慣れているエンジニアにとっては、Anacondaを利用することはあまり勧めしない。

AnacondaをInstallすると、Pythonの他の下記のソフトも含まれる。

Anacondaをインストール

https://www.anaconda.com/distribution/#download-section

[image]

Anacondaを起動する
 WindowsもしくはMacOSから Anaconda Navigator を起動する。

2. Jupyter Notebook

Juypter Notebookとは何?

The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text.

Jupyter Notebookは 文書と実行可能のソースコードを一緒に書くことができるツールです。Webアプリケーションとして作ってるので、
インタネットを通して動かすことができる。

Jupyter Notebook の起動はAnaconda Navigatorから起動できる。

顔認識をやってみる

title

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

インストール

pip3 install opencv-python
pip3 install opencv-contrib-python

mkdir origin_image
mkdir face_image
mkdir test_image

pip3 install matplotlib
pip3 install pillow

要件説明

reference

宿題学習ポイント(Concept)

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題021-I/O,ネットワーク処理

title

© 2018 Gridscale Inc. http://www.gridscale.com

前振り

要件説明

reference

宿題学習ポイント(Concept)

参考実装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# What we learn here: xxxxx

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

宿題009-お金持ち探す、データタイプ(集合)

お金持ち探す、データタイプ(集合)

前振り

お金の話はみんな大好きでしょう?女性なら、お金持ちを旦那にすれば一生安泰かもしれないが、
男なら、なんとかしてお金持ちになる方法を探さなければ。。。とも限らないです。

要件説明

様々の通貨を一定の額を所有する男たちから、お金持ちを探すゲームをしよう。
お金持ちの基準は100万ドル相当な額を上まる金銭を持っているかどうかによる。
なお、この日の為替相場は以下になっている。

1USD=109JPY
1EUR=1.159USD
1AUD=0.89USD
1USD=6.89CHN
1PND=1.45 USD

男の名前         所持金

=============================
  トーム         92万  EUR  
  ジェリー        359万 CHN
  フランク        109万 AUD
  サム          8399万 JPY
  ジェフリー       78万   PND

下記クラスを完成してください。

class RichManSet:
     richmen = {}
 ””” パラメータmanに対して、100万ドルを持っているかをチェックし,
   YESの場合、richmen集合に入れる。
 ”””
 def add(man):
       ## TODO

class Person:
     name="NONAME"
     amount=0
     ccy=""
     

問題

上記男集合からからお金持ちを探すプログラムを組んでください。
 出力: リーチマン: 。。。。。。。
     Poor man : .........

reference

宿題学習ポイント(Concept)

https://docs.python.org/ja/3.7/tutorial/datastructures.html#sets
https://docs.python.org/ja/3.7/library/stdtypes.html#set-types-set-frozenset

参考実装

提供しない。 ここまで学んだことを駆使してください。

言語リファレンス

https://docs.python.org/ja/3/reference/index.html

宿題の提出について

githubに宿題をコミットする際、必ず下記の様なフォルダ構成にしたがって欲しいです。
宿題を完成させたエビデンスファイルも合わせて出してください。できれば。

   --src  
     ---- 「ご自分のgithubid]  
         ---   less001  
               -- file001.py  
               -- evidence001.txt  

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.