freeCodeCampのカリキュラムが追加された!
freeCodeCampにおいて、以下のカリキュラムが追加されました。(こちらの記事参照)
- Scientific Computing with Python(Pythonでの科学的計算)
- Data Analysis with Python(Pythonでのデータ分析)
- Information Security(情報セキュリティ)
- Machine Learning with Python(Pythonでの機械学習)
せっかくなのでこれを機に勉強しようと思い立った次第。
今回の記事では*Scientific Computing with Python(Pythonでの科学的計算)*で行ったことを紹介します。
Scientific Computing with Pythonをやってみた
大きくこの分野は以下の二つに分かれていました。
- Python for Everybody
- Scientific Computing with Python Projects
Python for EverbodyではPythonとはという部分から、基本構文や、ネットワーク、データベースなどを動画+選択式の問題で学ぶことができました。動画は全て英語なので、字幕や翻訳を使いながらどうにか解読しました。
Scientific Computing with Python Projectsでは実際に問題が出され、コードを書いて提出すると言った形式で学ぶことができます。ローカルに実行環境がなくてもrepel.it
というブラウザ上で動く環境が提供されているので安心です。(私はローカルにソースをコピーして書きました)
また、テストコードも用意されており、全てのテストが通れば提出可能になります。
これから数回の記事では、Scientific Computing with Python Projectsで出された問題と、個人的なポイントを紹介していきます。
1問目:Arithmetic Formatter
最終的に欲しいものはarithmetic_arranger
メソッドで、動きは以下の通り
arithmeric_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])
Output:
32 3801 45 123
+ 698 - 2 + 43 + 49
----- ------ ---- -----
また、第2引数にbool型の値を指定することができ、True
の時は計算結果も出力させないといけないです。
実装方針
上パーツ( 32 3801 45 123
)、
中パーツ(+ 698 - 2 + 43 + 49
)、
下パーツ(----- ------ ---- -----
)に分けて、最後に\n
でつなげる。
皆さんにもトライしていただきたいので、私の実装は載せません…
個人的ポイント: 文字列の右寄せ、中央寄せ、左寄せ
この問題では以下のように、上、中、下パーツが右に揃っている必要があります。
○○○32
+○698
-----
○:空白
そこで文字列メソッドrjust()
が使いました。(中央寄せ:center()
、左寄せ:ljust()
)
また、数値を右寄せにしたいときには一度str()
で文字列に変換したのちに使います。
私は以下のように右寄せを行いました。
"""
top_num=32, mid_num=698
top_num_len=2, mid_num_len=3
op='+' or '-'
"""
row_len = max(top_num_len, mid_num_len) + 2 # +と空白1つ分
top = top_num.rjust(row_len)
mid = op + mid_num.rjust(row_len - 1)
最後に
このように、問題を解くと普段あまり使わない物の発見(今回で言えば文字寄せのメソッド)が多いのでとても楽しいです。
次の問題はTime Calculatorです。