Python入門 (備忘録として)
非エンジニアがPythonを勉強した記録です.
教科書にしたもの
『スッキリわかるPython入門』インプレス社 2019年初版
基本的なことが短期間でわかる.説明も丁寧で既出用語の参照先ページが書かれてるのも良い.
Anacondaのインストール方法
windowsとmacどちらのインストール手順もキャプチャ付きで説明されてる.とても分かりやすい ※AnacondaとはPython本体や下記JupyterLabを含むIDE(総合開発環境)
JupyterLab使い方
Anaconda navigaterから開ける.コードが書けて-実行できて-保存出来る.ブラウザ上で起動するのでとても簡単
1.素材
Pythonプログラムは次の素材で書ける
- 演算子
- 変数
- コレクション
- 関数
演算子(operand)
コンピュータに計算させるための記号の事
演算子 | 説明 | 例 | 例の結果 |
---|---|---|---|
+ | 足し算 | ||
- | 引き算 | ||
* | 掛け算 | ||
/ | 割り算 | ||
// | 割り算の商 | 7//4 | 1 |
% | 割り算の余り | 7%4 | 3 |
** | 累乗 | 2**3 | 8 |
= | 代入演算子 | x=10 | 変数xに10が入る |
変数(variable)
データを入れる箱
- 型の種類 :箱の中に入るモノ(要素)によって型は4種類ある
型 | 要素 | 例 |
---|---|---|
int | 整数 | 1、 20、 300 |
float | 少数 | 3.14、 -3.14 |
str | 文字列 | "Hi"、 'やあ' ※""か''で囲む |
bool | 真偽値 | True , False ※2種類だけ |
- 型の作り方・入れ方
x=int()
解説:xという変数をつくる.ついでにint型の指定をする
x=10
解説:xという変数に10を代入する. ※'='は左右等しいを示すのでなく、右の値を左へ代入している
y=x
解説:xという変数の中身(この場合10)をyに代入する
コレクション(collection)
変数の一種で、データを入れる箱が連続したもの
- コレクションの種類 :4種類あり特徴がある。種類は()や{}の記述の仕方で指定する
種類 | 要素 | 記述例 | 追加の仕方 | 特徴 |
---|---|---|---|---|
list | 複数の値 | z=[1,2] | z.append(3) | よく使う. appendではリスト最後尾に追加される |
dictionary | 複数のキーと値のペア | z={'A':1,'B':2} | z['C']=3 | ペアで設定できるので順番を気にしなくていい |
tuple | 複数の値 | z=(0,1,2) | 不可 | 値の変更が出来ない |
set | 複数の値 | z={1,2} | z.add(3) | 重複した値は入れられない |
※記述例はzというコレクションを作る場合 |
- 型の作り方・入れ方
z=list[10,20]
解説:zというlistをつくる.ついでに1番目に10を、2番目に20を代入
z.append[30]
解説:zというlistの最後尾に30を代入
z[1]=[200]
解説:zというlistの2番目に200を代入. ※1はlistのインデックスを指し、インデックスは0から始まるので1番目が[0]、2番目が[1]となる
この結果、zというlistは次のようになる z=[10,200,30]
インデックス | 要素 | -- |
---|---|---|
0 | 10 | |
1 | 200 | 最初に20だったが上記2行目で200が代入された。元の値20は消える |
2 | 30 |
- dictionaryの構造
dictionaryは他のと違って要素とキーがペアで保持されてる
例えば
z={'北海道':1000,'東京':2000,'沖縄':3000} のdictionaryは次のようになってる
インデックス | キー | 要素 |
---|---|---|
0 | '北海道' | 1000 |
1 | '東京' | 2000 |
2 | '沖縄' | 3000 |
これに
z['東京']=5000
解説:zというdictionaryのなかの、キーが'東京'を呼び出して要素に5000を代入。元の値は消える
とすると
インデックス | キー | 要素 |
---|---|---|
0 | '北海道' | 1000 |
1 | '東京' | 5000 |
2 | '沖縄' | 3000 |
となる. ※もしかするとdictionaryにはインデックスは無いかも… |
関数(function)
変数を操作したり表示したりいろいろできる
- よく使われる関数
関数名 | 引数 | 使い方の例 | 例の結果≒戻り値 |
---|---|---|---|
print('Hello') | Hello と画面に表示する | ||
fomat | '{}月{}日'.format(10,15) | 10月15日 という要素になる | |
input | キー入力 | input() | キー入力された値が 要素になる |
sum | 複数の数値 | sum(2,3) | 5 |
list | リストにしたい複数の要素 | list(1,2,3) | [1,2,3] |
- 関数の作り方
関数は用意されたもの以外に、自分のオリジナルでも作れる
例えば、ある値をn乗するsugoi関数を作ってみる
def sugoi(x,n):
z=x**n
return z
解説:これから関数名「sugoi」を定義(define)する。2つの引数を受け取りそれを、xとnに順番で代入→xのn乗の計算→結果をzに代入→それを戻り値として、本文に戻す。
これを使ってみると
a=sugoi(2,2)
print(a)
print(sugoi(3,3))
2行目と3行目でそれぞれsugoi関数を使っている。実行結果は
4
27
となる。カッコいい!
2.構文(syntax)
Pythonはコードを上から順次実行していくのが基本だが下記の2構文は異なる.
- 条件分岐
- 繰り返し
条件分岐(conditional branch)
条件によって処理を振り分ける
- 比較演算子 :これをつかって、左右の値を比べる
演算子 | 意味 |
---|---|
== | 同じ |
!= | 等しくない |
> | 超 |
< | 未満 |
>= | 以上 |
<= | 以下 |
これらの比較の結果、あてはまる時はTrueになり、そうじゃない時はFalseになる. | |
例えば、 |
if x == y:
処理1
elif x == z:
処理2
else
処理3
解説:もしx==yなら処理1.その後ifブロックからexit. 同じじゃないなら次へ.
次、もしx==zなら処理2.その後ifブロックからexit. 同じじゃないなら次へ.
次、上記2に該当しないものは必ず処理3.
※インデント(左端からの半角スペースの数)で構文の意味が全く変わるので要注意.
※ifやelseの後の「 : 」を忘れがち.これらは次項の繰り返し構文でも同じ.
繰り返し(iterate)
特定の条件の間、繰り返し処理を行う
- while :ある条件の間は処理を繰り返す
count=0
while count < 3
count = count+1
print('やあ!')
解説:変数countに0を代入し、count変数が3未満の間は処理を繰り返す.処理内容はcount変数に1を加算し、やあ!と表示.
※ここでのcount=count+1 は count+=1 と書いても同じ.こっちの方がよく使われる.
これを実行すると
やあ!
やあ!
やあ!
となる.
while構文でよく使われるのがリストの長さを返すlen関数.
次に、listxという3要素を持つリストを作り、len関数の動きを確認してみる.
listx=[2,6,4]
print(len(listx))
これを実行すると
3
となる.
これを使って、最初のコードの2行目をwhile count < len(リスト名)とすると、リストの要素の数だけ繰り返し処理をすることが出来る.
- for :所定の回数、処理を繰り返す
for構文を使うとより簡単にリストの繰り返し処理が出来る.
listx=[2,6,4]
for n in listx:
print(n)
解説:listxに3つの要素を代入.インデックスの[0]から順に要素そのものを変数nに代入. nの要素を繰り返し表示.これを実行すると
2
6
4
となる
for構文でよく使われるのが特定の長さのリストを作るrange関数.
次にrange関数の動きを確認してみる.
listx=range(3)
for n in listx:
print(n)
0
1
2
ここからlistx=range(3) は listx=[0,1,2] と同じだとわかる.
▲オブジェクト(object)(※未完成)
オブジェクトとは、データ(属性attribute)とデータ処理の関数(メソッド)をもった何かで、クラスによって生み出される
▲identify(※未完成)
参照されるのはオブジェクト自体でなく(id)idebtityのほうで、idは型によって不変と可変がある、と。
▲モジュール(module)(※未完成)
・モジュールとは:関数のまとまりのこと 例:標準ライブラリ>httpパッケージ>serverモジュール>HTTPServer関数 っていう階層構造
JupterLabで実行
P.317のコードを実行してみた。最初、インデント間違えてwhile構文が動かなかった等のポイントを下記Twitter画像に記載
from random import randint
print('数当てゲームを始める。3桁の数を当てて')
answer=list()
for n in range(3):
answer.append(randint(0,9))
is_continue=True
while is_continue==True:
prediction=list()
for n in range(3):
data=int(input('{}桁目の予想入力(0~9)>>'.format(n+1)))
prediction.append(data)
hit=0
blow=0
for n in range(3):
if prediction[n]==answer[n]:
hit+=1
else:
for m in range(3):
if prediction[n]==answer[m]and n!=m:
blow+=1
print('{}ヒット!{}ブロー'.format(hit,blow))
if hit==3:
print('正解!')
is_continue=False
else:
if int(input('続ける?1:はい 2:終わる>>'))==2:
print('正解は{}{}{}だ'.format(answer[0],answer[1],answer[2]))
is_continue=False
print('おわり')
用語集 (日本語/English)
- プログラミング用語
日本語 | 英語 | 特記 |
---|---|---|
変数 | variable | |
代入 | assign | |
宣言 | declare | |
コレクション | colection | |
要素 | ellement | |
関数 | function | |
定義 | define | |
引数 | argument | PythonRhinoSctipt では parameter と表現されてる |
戻り値 | return value | |
呼出し | call | |
参照 | refar | |
分岐 | branch | |
繰り返し | iterate | loopingとも |
構文 | syntax | |
( ) | Round bracket | |
[ ] | Square bracket | |
- | Dash | |
~ | Tilde | |
予約語 | reserved word | |
Discussion