codecademyのpythonコースをやってみた

codecademyというプログラミング言語を学べるサイトでpythonコースをやっていて、つまづいたところをメモ。

Catalog | Codecademy

 

[Lists and Functions Forum]の[Printing out a list item by item in a function]

 

大体全体の52%くらいまで進んだところで、上記のタイトルの問題に遭遇。

ちゃんとコーディングしたはずなのに、関数の中にnなんて使ってないのに下記のエラーが。

Oops, try again. The body of your function should not contain any references to 'n'

 

色々調べて結局先に進めたのですが、下記のように関数の外で自分で関数をprintするといいらしい。

 

n = [3, 5, 7]
def print_list(x):
    for i in range(0, len(x)):
        print x[i]
print print_list(n)

 

やっぱみんな同じところで引っかかっているらしいです。

12/18 Printing out a list item by item in a function | Codecademy

 

 問題を解かないと先に進めないので、問題にバグ(?)があって、OKにならない場合、次の問題ができないのです。。。

この問題はあまり深く考えずに次に進んでいきます。

 

株式投資で普通でない利益を得る

物理学を人間社会に応用したいと思い立ち、マーケティングや経済の中で物理を応用している人たちの論文を調べたり、そもそも今確立されている理論とか、基本的なこととかを勉強しています。

具体的には、物理経済学の自分なりの応用とか、SNSの状態の定義とか、仮想通貨の価格変動の理論を構築とか、したいなぁと思っています。

そんな中で、上記のようなゴールにはかなり遠いのですが、投資の基礎的な考えとかも調べていて、「株式投資で普通でない利益を得る」という本をkindleで読んでいます。

 

読書メモ

 

株式投資で普通でない利益を得る (ウィザードブックシリーズ)

株式投資で普通でない利益を得る (ウィザードブックシリーズ)

 

 

「会社が今後、期待通りの成長を続けられる状態かどうかを見極める良い方法がある。相対的な1株当たりの利益(配当と株式分割は考慮するが、増資目的の新株発行分は除く)の上昇率を、前回の景気循環のピークから現在までと、現在から次のピークまでで比較してみるのである。途中でどのようなことがあったとしても、今後も少なくともこれまで以上の上昇率が達成できると思えるならば、その株は保有し続けるべきだ。しかし、もしそれが難しそうならば、売るべきである。」

※株を売るタイミングについての章内にて

 

 

投資というのは興味深く、もし正しい理論がすでにありそれを応用して確実に儲かるのなら誰でもそれを実行しているはずなのですが、そうなっていない理由を考えたいと思っています。

人間だけの世界とプログラムされたボットと共存している世界では、その振る舞いが違うはずですし、bitcoinのようなまだまだ発展途上でごく一部の人間しかいない世界もまた起きている事象は違うはずですが、その構成要素ごとの性質は共通していて、それらの構成比と相性などで、各々の世界の振る舞いがある程度決まってくるんじゃないかと思っています。それを確かめに行きたいのと、そのついでに、効率化や金儲けもできれば嬉しいです。

 

201MでポケモンGOをプレイする

ポケモンGOAndroid端末だとOS 4.4(Kitkat)以上でないとプレイできないのですが、ウチにある端末の中で4.4以降のものは数台しかなかったので、余っていた201Mを有効活用するために201MをKitkatへのバージョンアップし、ポケモンGOをインストールしてみました。

 

201Mを4.4にバージョンアップする

これは下記で紹介しています。失敗すると端末が壊れる可能性があるので、まねされる方は自己責任でお願いします。

 

spitta8823.hatenablog.com

 

で、201Mを4.4にバージョンアップできたら、あとはポケモンGOをインストールして、ちゃんと動くようにするだけです。

 

ポケモンGOをインストールする 

ポケモンGOをインストールするには、いくつかの手段が考えられます。ちなみに、一番の正攻法であるGooglePlayからのダウンロードは、201Mでは検索しても表示されなかったので出来ないようです。

野良サイトにアップしてあるapkファイルをスマホのブラウザから落としてしまうのが手っ取り早いのですが、ポケモンGOほどの注目度のあるアプリの野良版はかなり危険だと思うので、自分は、他のAndorid 4.4以上の端末でGooglePlayからダウンロードしたapkファイルを、adb pullコマンドでPCに抜き出して、それを今度は、201Mにadb installコマンドでインストールしました。

 

 

まず、既にポケモンGOのアプリをインストールしている端末をデバッグモードでPCにつなぎ、下記のコマンドでapkファイルのパッケージの格納場所とファイル名を調べます。

> adb shell pm list packages -f

 

ただ、これだと全てのapkファイルが羅列され、必要なファイルがみにくいので、下記のように検索絞り込みをします。

> adb shell pm list packages -f | grep -i pokemon

すると

package:/data/app/com.nianticlabs.pokemongo-1/base.apk=com.nianticlabs.pokemongo

と表示されるので、/data/app/com.nianticlabs.pokemongo-1/に、base.apkというファイル名で格納されていることがわかります。あとは、

adb pull /data/app/com.nianticlabs.pokemongo-1/base.apk

で、apkファイルが取り出せます。

 

 

次に、取り出したapkファイルの保存場所に移動し、同じくadbコマンドで今度は201Mにインストールします。

adb install base.apk

これでポケモンGOが201Mにインストールされます。ちなみに、最初、4.4よりも古い201Mにadb installしようとしてみたところ、「NSTALL_FAILED_OLDER_SDK」とエラーが返され、インストールできませんでした。これは、apkファイルの対応OSバージョンよりも、端末のOSバージョンが古い際のエラーです。

 

ポケモンGOを使えるようにする

これで、めでたしめでたし。。。 かと思いきや、ポケモンGOを起動しても、Googleアカウントの登録画面から先に遷移せず、画面上部には、「GPSの信号をさがしています」が表示され続けるという事象が発生。

これの対処には、端末の「設定」から「位置情報」の精度を「高精度」に設定します。あと、GoogleMapアプリ、Google Play 開発者サービス(アプリ)を最新版にアップデートすれば、ちゃんと起動するようになりました。

昔の機種ではあるので、ちょっと処理負荷がかかるとアプリが落ちてしまいますが、全く使えないほどではないといった感じ。

 

かくして、家に眠っていた201Mは、ポケモンGO用端末として生まれ変わったのでありました。

嫁のスマホAndroid OS 4.2でポケモンGOが出来ない状態だったので、この201Mを渡して、一緒にポケモンを捕まえに行ったりしています(^^)