私的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_ = samurainum = 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 = 4str = "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"