Python:randomモジュール
2.randomモジュールの使い方
・random関数→0.0<=random<1.0の範囲で乱数を生成(float型)
・uniform関数→任意の範囲で乱数を生成(float型)
・randint関数→ 任意の範囲で乱数を生成(int型)
・choice関数→乱数でリストや文字列の要素を取得
・shuffle関数→リスト内の要素をランダムに入れ替える
shuffle関数は文字列には対応しておらず、もともとのリストも変えてしまう
Python:ライブラリ/パッケージ/モジュール
ライブラリ:他のプログラムから利用されるプログラム
→さらに、標準ライブラリ(Pythonをダウンロードした際に付属)と外部ライブラリ(個人作成を頒布したもの)に分かれる
モジュール:読み込むプログラムそのもの
パッケージ:モジュールを複数まとめたもの
モジュールの例
1.モジュールの使い方
・構文
import モジュール名/ライブラリ名
モジュール名.関数()
・モジュール内の関数を確認→dir()関数
構文
import モジュール名
dir(モジュール名)
・モジュール内の関数の使い方を確認→help()関数
・モジュールを別名で定義
Python:関数
関数=複数のコードをひとつにまとめたもの
Pythonで標準で組み込まれている関数
- print()
- range()
- enumerate()
- list()
- tuple()
- etc.
・ユーザー定義関数
構文:
def 関数名(引数):
関数内で処理する内容
関数名(引数) #定義した関数を呼び出す
プログラムは上から順に実行されるため、関数を定義するより前に関数を呼び出そうとするとエラーになる
・関数の作成
・関数の命名規則(PEP8推奨)
- 関数の名前は小文字
- 必要に応じてアンダースコア(_)で区切る
- etc.
https://pep8-ja.readthedocs.io/ja/latest/
・関数の引数
・複数の引数を渡す
・引数にデフォルトの値を設定する
・関数の戻り値を設定する
構文
def 関数名(引数):
関数で行う処理
return 値
変数=関数名(引数)
関数の定義のみ行い、処理内容を後で記述するときに使用される
Python:基本構文(3)
- 基本構文(1):for
- 基本構文(2):if,if-else,if-elif-else
- 基本構文(3):while
3.while
構文:
while 条件式:
条件式がTrueの間、処理される内容
条件式がTrueの間、処理が繰り返されるため必ず条件式内にある変数を増減させる処理が必要
そうでなければ永久ループに陥ってしまう
永久ループから抜け出すためには、
- IDLEのプログラム実行画面で「Ctrl+C」
- ソースコード編集ファイルで「Shell」→「Interrupt Execution」
・処理の実行途中でループを抜ける→break
構文:
while 条件式:
条件式がTrueの間、処理される内容
break
・ループをスキップする→continue
構文:
while 条件式:
条件式がTrueの間、処理される内容
continue
上の例ではcontinueより上にx+=1が書かれていないので、if文がTrueの条件式になってしまったらprint(x)を実行→continue→ループの先頭に戻る→if文→print(x)→・・・となる
・whileの終了時に実行される処理→else
構文:
while 条件式:
条件式がTrueの間、処理される内容
else:
条件式が当てはまらなくなった場合の処理
Python:基本構文(2)
- 基本構文(1):for
- 基本構文(2):if,if-else,if-elif-else
- 基本構文(3):while
2.if,if-else,if-elif-else
・if
if 条件式1:
条件式1がTrueの場合の処理
・if-else
if 条件式1:
条件式1が Trueの場合の処理
else:
条件式1が Falseの場合の処理
・if-elif-else
if 条件式1:
条件式1がTrueの場合の処理
elif 条件式2:
条件式2がTrueの場合の処理
else:
条件式1、2どちらもFalseの場合の処理
・条件式の組み合わせ→and,or
if (条件式1 and 条件式2):
条件式1も条件式2もどちらもTrueの場合の処理
if (条件式1 or 条件式2):
条件式1か条件式2のどちらかがTrueの場合の処理
・条件に要素を含むかどうか→条件式にinを用いる
・リスト型/タプル型でのin
・forとの組み合わせ
インデント位置の違いによる実行結果の違い
このようにPythonではインデントでブロックを認識しているので、インデントを把握することはかなり重要
・三項演算子でif-elseを1文にまとめる
Trueの場合の処理 if 条件式 else Falseの場合の処理
Python:基本構文(1)
- 基本構文(1):for
- 基本構文(2):if,if-else,if-elif-else
- 基本構文(3):while
1.for
- A:繰り返す回数を変数で保持する
- B:グループ内の値を繰り返す
- C:インデックスと値を使う
A:繰り返す回数を変数で保持する →for 変数 in range(繰り返す回数):
・範囲指定で繰り返す→range(開始,終了)
B:グループ内の値を繰り返す →for 変数 in リスト・タプル・セット・文字列など:
特徴:Aの書き方と異なり、事前にループ回数を指定する必要がない
C:インデックスと値を使う→for 変数1,変数2 in enumerate(リストやタプルなど):
- 変数1→繰り返す回数としてリストやタプルのインデックス番号を利用
- 変数2→リストやタプルの要素など
Python:データ型の文法まとめ(2)
- タプル型
- 辞書型
- セット型
・タプル型→「()」で作成
特徴:要素の値を変更できない、作成スピードがリスト型より速い
定数のような使い方になる
・リスト型をタプル型に変更→tuple()関数
・タプル内の要素を指定→タプル[インデックス]
・タプル内の要素を範囲指定→タプル[インデックス:インデックス]
・タプル内の指定した要素のインデックスを調べる→タプル.index(要素)
・タプル内に指定した要素が存在するか確認→要素 in タプル
・タプル内にある要素数を調べる→タプル.count(要素)
・タプルの長さを調べる→len(タプル)
これらはリストと同様の書き方
・タプルの更新/削除→不可
タプルそのものの削除は可能
・辞書型→「{}」で作成
特徴:インデックスの代わりにキーで要素を指定
・辞書型の作成
- 要素とキーを一緒に設定
- copy()関数の使用
- 辞書型のキーをリストから作成
・辞書型の値を読み込む→辞書[キー]、get()関数、keys()関数、values()関数、items()関数
- keys関数→キーだけ読み込む
- vakues関数→値だけ読み込む
- items関数→値とキーのペアを読み込む
・キーの存在確認→キー in 辞書型
・辞書型のペア数を調べる→len()関数
・辞書型の値の更新/削除
更新→辞書型[キー]=値
削除→del 辞書型「キー」、pop()関数
・セット型→set関数
特徴:集合を扱う、値の重複をさせない、インデックスがない
・値の追加→add()関数
・値を更新/追加できないセット型→frozenset型
・セット型の組み合わせ→union()関数、intersect()関数
・セット型の削除→remove()関数、discard()関数、clear()関数
- remove関数→値がない場合にエラーが出る
- discard関数→値がない場合にエラーが出ない
- clear関数→値をすべて削除する