私的AI研究会 > Python覚書
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 の場合 (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 への移行はソースコードに変更を加えないといけない。変換をサポートするツールもあるようだが、最終的には手動のよう。python2 のソースコード資産も多くあるようなのでいまだに両バージョンが混在している模様。
取り敢えずの問題は「print」python2 → print 'ABCD' または print "ABCD" python3 → print('ABCD') または print("ABCD")python3 の書式は python2 でもOK のようなので、print 文は print() と表現することにしよう。
参考サイト:Python2とPython3の違い
$ cd ~/Programs $ vi hello.py $ print("Hello world!")Pythonのプログラムを実行するには、コマンド「python 実行ファイル名」。
$ python hello.py $ Hello world!
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
# Hello Worldを出力する print("Hello world!!")複数行コメントする場合は「'」(シングルクォーテーション)または「"」(ダブルクォーテーション)を3つ指定する必要があある。
''' print("コメント1") print("コメント2") print("コメント3”) '''シングルクォーテーションで囲った箇所は出力されない。クォーテーションマーク3つで囲んだ部分は文字列として扱われるので、実質コメントとして機能する。
# -*- coding: utf-8 -*-あるいは
# _*_ coding: utf-8 _*_
num = 100 pi = 3.14 str_ = "samurai" print("num = ",num) print("pi = ",pi) print("str_ = ",str_) # 実行結果 num = 100 pi = 3.14 str_ = samurai
num = 100 print(num + 100) # 足し算 print(num - 50) # 引き算 print(num * 10) # 掛け算 print(num / 10) # 割り算 print(num % 30) # 余剰 # 実行結果 200 50 1000 10.0 10
age = 25 if age > 20: print("あなたの年齢は20歳以上ですね!") # 実行結果 あなたの年齢は20歳以上ですね!比較演算子などのbool型(Ture, False)を返す演算で条件を指定する。
演算子 | 結果 |
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 |
a = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]○ リストの参照
a = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] b = a[5] print(b)
# 辞書を定義 fruits = {"apple":100, "orange":80, "melon":300} # 値を取り出す print(fruits["apple"]) print(fruits["orange"]) print(fruits["melon"]) # 実行結果 100 80 300 辞書
a = (10, 20, 30, 40, 50, 60, 70, 80, 90, 100) b = a[5] print(b)
for 変数 in オブジェクト: 実行する処理
words = ['Japanese', 'English', 'French']
for w in words: print (w)結果
Japanese English French・変数wに、配列wordsの最初の要素(Japanese)が代入されてprintで出力 ・変数wに、配列wordsの二番目の要素(English)が代入されてprintで出力 ・変数wに、配列wordsの三番目の要素(French)が代入されてprintで出力
for num in range(5): print(num)結果
0 1 2 3 4
for num in range(5, 10): print(num)結果
5 6 7 8 9「range(5, 10)」と記述することで、5から9までの範囲を指定することができる。
for num in range(0, 10, 3): print(num)結果
0 3 6 9範囲と増加量を指定する。0以上10未満の数字の中で、3ずつ増加する。
range(5) → 0,1,2,3,4 range(5,10) → 5,6,7,8,9 range(0,10,3) → 0,3,6,9
for num in range(20): print num if num == 3 break結果
0 1 2 3
for num in range(2, 10): if num % 2 == 0: print("偶数", num) continue print("奇数", num)結果
偶数 2 奇数 3 偶数 4 奇数 5 偶数 6 奇数 7 偶数 8 奇数 9
i = 0 while i < 5: print("i = ",i) i = i + 1 # 実行結果 i = 0 i = 1 i = 2 i = 3 i = 4
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"