- 追加された行はこの色です。
- 削除された行はこの色です。
#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