#author("2021-11-15T02:21:45+00:00","default:mizutu","mizutu") [[私的AI研究会]] > Python覚書 * Python入門 [#g7979353] #ref(画像一覧/python_logo.jpg,right,around,25%,python_logo.jpg) #contents RIGHT:&size(12){※ 最終更新:2021/11/15 }; ** コマンドライン [#g35e56ea] >python2 の場合 $ python Python 2.7.16 (default, Oct 10 2019, 22:02:15) [GCC 8.3.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> print 'test' test >>> print('test') test >>> >python3 の場合 &color(red){(python2とは文法の違うものがあるのに注意)}; $ source ~/env/bin/activate (env) $ python Python 3.7.3 (default, Dec 20 2019, 18:57:59) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> print 'test' File "<stdin>", line 1 print 'test' ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print('test')? >>> print('test') test >>> いずれも、終了は''「Ctrl+d」'' または ''quit()'' あるいは ''exit()'' ** python2/python3 悩ましい違い! [#c7f29dc7] > python2 からpython3 への移行はソースコードに変更を加えないといけない。変換をサポートするツールもあるようだが、最終的には手動のよう。python2 のソースコード資産も多くあるようなのでいまだに両バージョンが混在している模様。~ 取り敢えずの問題は「print」 python2 → print 'ABCD' または print "ABCD" python3 → print('ABCD') または print("ABCD") python3 の書式は python2 でもOK のようなので、''print 文は print() と表現''することにしよう。 > 参考サイト:[[Python2とPython3の違い>+https://qiita.com/ty21ky/items/e5ce2fd04c2ef07955a1]] ** Hello world [#i299f83f] - PythonでHello Worldを出力する方法は、print関数の引数に文字列を指定するだけでOK。~ ターミナルを起動して、Pythonのプログラムを実行するファイル「hello.py」を作成。~ $ cd ~/Programs $ vi hello.py $ print("Hello world!") Pythonのプログラムを実行するには、コマンド「python 実行ファイル名」。~ $ python hello.py $ Hello world! ** 変数の使い方 [#acaae24a] - 変数はまず宣言を行い、宣言した変数に対して値の代入する。 num1 = 100 num2 = 200 num3,num4 = 300,400 print("num1=",num1) print("num2=",num2) print("num3=",num3) print("num4=",num4) # 実行結果 num1= 100 num2= 200 num3= 300 num4= 400 - 変数名の左に、=を挟んで値を代入。num3,num4 のように連続して変数を定義して、300,400のように連続して値を代入することもできる。~ - 変数名として使える文字列~ 小文字の英字/大文字の英字/数字/アンダースコア &color(red){数字だけの変数名は作れない};~ ** コメント [#ea5b874c] - 1行コメントする場合は、「#」(シャープ)を使用する~ # Hello Worldを出力する print("Hello world!!") 複数行コメントする場合は「'」(シングルクォーテーション)または「"」(ダブルクォーテーション)を3つ指定する必要があある。 ''' print("コメント1") print("コメント2") print("コメント3”) ''' シングルクォーテーションで囲った箇所は出力されない。クォーテーションマーク3つで囲んだ部分は文字列として扱われるので、実質コメントとして機能する。~ ** 文字コードの指定 [#me6bce9f] - 1行目または2行目にコメント文として挿入する。~ # -*- coding: utf-8 -*- あるいは # _*_ coding: utf-8 _*_ ** データ型 [#mcf02c36] - Pythonでは変数の型を宣言する必要はない。~ 動的に型付けを行うため、代入された値によって型が自動的に判断される(動的型付け)。~ num = 100 pi = 3.14 str_ = "samurai" print("num = ",num) print("pi = ",pi) print("str_ = ",str_) # 実行結果 num = 100 pi = 3.14 str_ = samurai ** 演算方法 [#w788c3c5] - 演算子~ ・ 四則演算 (+、-、*、/)~ ・ 余剰 (%) 余りを出す計算~ ・ 除算 (//) /と//は少し挙動が違うので注意!~ ・ べき乗 (**)~ num = 100 print(num + 100) # 足し算 print(num - 50) # 引き算 print(num * 10) # 掛け算 print(num / 10) # 割り算 print(num % 30) # 余剰 # 実行結果 200 50 1000 10.0 10 ** 条件分岐(if文) [#oba3078d] - 処理を分岐する~ age = 25 if age > 20: print("あなたの年齢は20歳以上ですね!") # 実行結果 あなたの年齢は20歳以上ですね! 比較演算子などのbool型(Ture, False)を返す演算で条件を指定する。~ Pythonの比較演算子は以下の通り。 |演算子|結果|h |x < y|xがyより小さければTrue| |x <= y|xがyより小さいか等しければTrue| |x > y|xがyより大きければTrue| |x >= y|xがyより大きいか等しければTrue| |x == y|xとyの値が等しければTrue| |x != y|xとyの値が等しくなければTrue| |x is y|xとyが同じオブジェクトであればTrue| |x is not y|xとyが同じオブジェクトでなければTrue| |x in y|xがyに含まれていればTrue| |x not in y|xがyに含まれていなければTrue| ** リスト(配列) [#gb9712d5] - 一つの値ではなく、一連の値を格納できる変数。~ ○ リストの初期化~ 各要素をカンマで区切り、カッコ[ ]内に記述~ a = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] ○ リストの参照~ リスト名[n]でリストの要素にアクセスできPythonでは要素番号は 0 から始まる。~ a = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] b = a[5] print(b) ** 辞書(dictionary)型 [#fa14baf1] - キーと値を組み合わせた値が格納されているデータ。~ # 辞書を定義 fruits = {"apple":100, "orange":80, "melon":300} # 値を取り出す print(fruits["apple"]) print(fruits["orange"]) print(fruits["melon"]) # 実行結果 100 80 300 辞書 ** タプル [#i018ebe0] - 要素を変更できないリスト、初期化時のカッコの形が( )。座標(X・Y)、画像の大きさ(幅・高さ)、色情報(青・緑・赤)などに使われる。~ a = (10, 20, 30, 40, 50, 60, 70, 80, 90, 100) b = a[5] print(b) ** ループ処理(for文) [#zfc40356] *** python for文:書き方 [#l7a81178] for 変数 in オブジェクト: 実行する処理 *** python for文:具体例(配列) [#wb445b1b] - 以下のようなwordsという配列がある words = ['Japanese', 'English', 'French'] - 配列の要素3つを繰り返し処理したい場合 for w in words: print (w) 結果 Japanese English French ・変数wに、配列wordsの最初の要素(Japanese)が代入されてprintで出力 ・変数wに、配列wordsの二番目の要素(English)が代入されてprintで出力 ・変数wに、配列wordsの三番目の要素(French)が代入されてprintで出力 *** python for文:具体例(range関数) [#l607cf79] - range関数の使い方① 5回繰り返すfor文を書きたい場合 for num in range(5): print(num) 結果 0 1 2 3 4 - range関数の使い方② for num in range(5, 10): print(num) 結果 5 6 7 8 9 「range(5, 10)」と記述することで、5から9までの範囲を指定することができる。 - range関数の使い方③ for num in range(0, 10, 3): print(num) 結果 0 3 6 9 範囲と増加量を指定する。0以上10未満の数字の中で、3ずつ増加する。 - range関数まとめ range(5) → 0,1,2,3,4 range(5,10) → 5,6,7,8,9 range(0,10,3) → 0,3,6,9 *** python for文:breakについて [#b51062bb] - breakの使い方 for num in range(20): print num if num == 3 break 結果 0 1 2 3 - python for文:continueについて~ それ以降のブロックをスキップしてブロック先頭に戻る処理。~ for num in range(2, 10): if num % 2 == 0: print("偶数", num) continue print("奇数", num) 結果 偶数 2 奇数 3 偶数 4 奇数 5 偶数 6 奇数 7 偶数 8 奇数 9 ** ループ処理(while文) [#b24b06d4] - 指定した条件がTrueのときに処理を繰り返す。 i = 0 while i < 5: print("i = ",i) i = i + 1 # 実行結果 i = 0 i = 1 i = 2 i = 3 i = 4 #br * Tips [#y5133cc1] ** Python には swich分がない [#n9e27c6b] - switch文の代用としてif-elif-else 文をつかう。 str = "A" if str = "A" or str == "B": print "a or b" elif str == "C": print "c" elif str == "D": print "d" else: print "unknown" さらに簡潔な書き方 str = "A" if str in {"A", "B"}: print "a or b" elif str == "C": print "c" elif str == "D": print "d" else: print "unknown" #br * 参考資料 [#m7cd4197] - [[Python入門 基本文法をまとめて解説>+https://www.sejuku.net/blog/49951]] - [[Pythonエラー一覧(日本語)>+https://qiita.com/soutarrr7/items/84e529d87aa3b3a9adcb]] - [[pythonで自作関数をモジュール化・パッケージ化>+https://qiita.com/ren094275/items/5d42f7c6be8c5d3cd014]] - [[Python で文頭に記載する文字コード>+https://qiita.com/KEINOS/items/6efc1147b917d7811b5b]] - [[Pythonでのswitch文の書き方>+https://uxmilk.jp/12397]] - [[Pythonのif文による条件分岐の書き方>+https://note.nkmk.me/python-if-elif-else/]] - [[Pythonで数字の文字列strを数値int, floatに変換>+https://note.nkmk.me/python-str-num-conversion/]] - [[python for文を初心者向けに解説!for文基礎はこれで完璧>+https://udemy.benesse.co.jp/development/web/python-for.html]] - [[Python, formatで書式変換(0埋め、指数表記、16進数など)>+https://note.nkmk.me/python-format-zero-hex/]] - [[Python入門(6) リスト>+https://www.isc.meiji.ac.jp/~mizutani/python/intro6_python.html]] - [[【追加/削除】Pythonのlist(リスト)の使い方を徹底解説>+https://www.modis.jp/staffing/insight/column_98/]] - [[【Python】list(配列)の取り出し方>+https://pg-chain.com/python-list-2]] #br