#概要
プログラミング未経験者がpythonを学んでいく過程を記録していく、自分用メモ的記事
短期的な目標は、Python 3 エンジニア認定基礎試験
の合格
ただ合格するための勉強ではつまらないので、ちゃんと業務に活かせるようにしたい
https://www.pythonic-exam.com/exam/basic
長期的目標としては、Django
でナウいWEBサービス作ったり
機械学習とかもやってみたり
#諸々のスペック
##書いてる人
30半ばのサラリーマン
工事→オペレータ→構築→設計・運用
と、IT業界の闇を垣間見てきたインフラ系のエンジニア
主にCiscoやJuniperあたりを担当することが多かったが、
現在は所謂WEB系の企業に籍を置いている
最近はネットワークエンジニアでもプログラムを書けなければアカン!
という記事見たり見なかったりしたので
流行りに乗ってpythonなんぞに手を出してみる
ちなみにプログラム経験は皆無である
##マシンスペック
MacBook Pro (13-inch, 2016, Two Thunderbolt 3 ports)
Intel Core i5 2GHz
8GB 1867 MHz LPDDR3
macOS High Sierra 10.13.3
バッテリー交換対象なので早めに対応したい
https://www.apple.com/jp/support/13inch-macbookpro-battery-replacement/
##環境
Python 3.6.5
PyCharm Community Edition
Version: 2018.1.2
Build: 181.4668.75
色々なサイトでおすすめされてるのでPyCharmが良いらしい
#pythonとは?
割と新しめのオープンソースのプログラミング言語
バージョンは2系と3系があるが、今から学習するなら3系が良さそう
(多少動作が違うらしい)
pythonが優れている点は以下
- 可読性の高さ
pythonはより少ないコードで実行できるよう設計されているので
コードが読みやすく、他の言語に比べれば学習コストは低いらしい
public class Main {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
print("Hello, world!")
- ライブラリが豊富
ライブラリ(汎用的に使えるプログラムをまとめたもの?)がたくさん公開されているらしい
なんか色々便利に使えるとか何とか
- オブジェクト指向
オブジェクト指向・・・。聞いたことはあるけど、いまいちピンときませんな・・・
ソフトウェアを開発する上で、効率的な開発を行う為の概念らしい。
学習をしていく中で掴んでいこう!
#基本的な文法
##計算について
pythonで計算を行う場合は、以下の演算子を利用することができる
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
x + y | xとyの和 | 1 + 2 | 3 |
x - y | xとyの差 | 2 - 1 | 1 |
x * y | xとyの積 | 2 * 3 | 6 |
x / y | xをyで割った商 | 4 / 2 | 2.0 |
x // y | xをyで割った商の小数点以下切り捨て | 10 // 3 | 3 |
x % y | xをyで割った商のあまり | 10 / 3 | 1 |
- x | xの符号反転 | -1 | -1 |
x ** y | xのy乗 | 2 ** 3 | 8 |
数字や文字列などのデータには、それぞれ型
というものが存在している
整数であればint型
浮動小数点数であればfloat型
といった具合
関数 | 説明 | 例 | 結果 |
---|---|---|---|
abs(x) | xの絶対値 | abs(-5) | 5 |
int(x) | xを整数(int型)に変換 | int(3.14) | 3 |
float(x) | xを浮動小数点数(float型)に変換 | float(1) | 1.0 |
round(x[,n]) | xをn桁にまとめる(nを省略した場合は0) | round(3.141592,3) | 3.142 |
実行例
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 05:52:31)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>>
>>> ((500*18)+(400*(8-2))+(700*(21-5)))*0.9
20340.0
>>>
##変数について
###変数とは
変数
とは、メモリ上に数値や文字列などのデータを一時的に記憶しておく為の領域
変数
に付けた名前を変数名
と呼ぶ
###変数を使うには
変数
に値を記憶するには、変数名 = 値
と記述する
>>> test = 100
>>> print(test)
100
>>>
変数名
にはアルファベットや数字、_
(アンダースコア)が使用できるが
数字から始まる変数名
は使用できない
また、その他にも_
(アンダースコア)から始まるもの、
予約語
と呼ばれるものも使用ができない
and as assert break class continue def
del elif else except exec finally for from
global if import in is lambda not or pass
print raise return try while with yield
$ cat 001.py
test1 = 2
test2 = 3
result = test1 * test2
print(result)
$ python 001.py
6
###print関数で数値に説明を加える
print関数
を使うことで、処理結果の画面出力ができるが
数値だけではなく、任意のテキストを出力することも可能
その際は、出力したい内容を"
ダブルクォート、もしくは'
シングルクォートで囲む
(関数についてはおいおい説明)
print("これはテストです")
また、,
カンマで区切ると、複数の値を出力することが出来たり
変数
を指定することも出来る
$ cat 002.py
test = 100
print("これはテストです" ,test)
$ python 002.py
これはテストです 100
##文字列について
文字列の表現方法
文字列は、"
ダブルクォート、もしくは'
シングルクォートで囲み、表現することができる
記号が違うだけで、できることは同じ
では、なぜ2つの記号が使えるのか?
それはクォート自身を文字列で表現したい場合があるから
#ダブルクォートを文字列で表現したい場合
print('aaa "bbb" ccc')
aaa "bbb" ccc
#シングルクォートを文字列で表現したい場合
print("aaa 'bbb' ccc")
aaa 'bbb' ccc
###特殊文字を使うときのエスケープシーケンスについて
ダブルクォートやシングルクォートを同時に文字列として使用したい場合は
\
を使って、文字をエスケープすることができる
#ダブルクォートの中でダブルクォートを使用
print("aaa \"bbb\" ccc")
aaa "bbb" ccc
###三重引用符の利用
複数行にわたって文字列を記述したい場合は、三重引用符
を使用する
三重引用符
とは、ダブルクォートやシングルクォートを3つ連続で記述したもの
$ cat 003.py
test = """
aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccc
"""
print(test)
$ python 003.py
(空行)
aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccc
(空行)
このままでは、文字列の最初の行と最後の行に空行が挿入されてしまう
三重引用符の前後の改行前に\
を置くことで空行を削除することがでる
$ cat 004.py
test = """\
aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccc\
"""
print(test)
$ python 004.py
aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccc
###文字同士の結合
文字列と文字列は、+
演算子を使うことで結合が出来る
$ cat 005.py
test1 = "aaa"
test2 = "bbb"
test3 = test1 + test2
print(test3)
$ python 005.py
aaabbb
###文字列に変数の値を埋め込む
文字列を結合するにはstr型
(文字列型)同士でなくてはならない
str型
とint型
といった結合はエラーが発生してしまう
この場合、int型
をstr型
に変換する必要がある
str(数値)
$ cat 006.py
test = 100
print("test" + test)
$ python 006.py
Traceback (most recent call last):
File "/Users/XXXXXX/PycharmProjects/test/006.py", line 2, in <module>
print("test" + test)
TypeError: must be str, not int
$ cat 007.py
test = 100
test = str(test) ⬅️str型に変換
print("test" + test)
$ python 007.py
test100
###format()で値を埋め込む方法
文字列を埋め込みには、format()
メソッドを使う方法もある
こちらの方が簡潔にプログラムを記述できる
(メソッドについてはおいおい説明)
"文字列".format(値0, 値1, 値2, ....)
$ cat 008.py
test0 = 1000
test1 = 100
test2 = 1
result = "{0}mm = {1}cm = {2}m".format(test0, test1, test2)
print(result)
$ python 008.py
1000mm = 100cm = 1m
###format()で名前付き引数を使う
名前付き引数を指定して、文字列中に埋め込むことも出来る
$ cat 009.py
test1 = "{age}才 {job}です"
test2 = test1.format(age=30, job="manager")
print(test2)
$ python 009.py
30才 managerです