Python演習ドリル200 基礎練習71〜80⌗

Pythonプログラムを学び始めた方向けの演習ドリルです。

今回は、基礎練習の71〜80です。

jupyterとjupyter notebook⌗

本演習ではjupyter notebookを使用します。 インストールされているか確認してください。 インストールされていない場合、jupyterとjupyter notebookのインストール方法については、レッスン33を参照してください。

演習前の基礎学習⌗

実際にjupyter notebookを使用して演習を行う前に、演習の中で使用するPythonの機能について学習しましょう。

  • リスト(配列)つづき

    • sum関数

      sum(リスト)を実行すると、リストの値の総和(全ての要素を足した値)を返します。

      print(sum([1, 2, 3, 4, 5]))
      >> 15
      

      sum(リスト)/len(リスト)で平均値を算出することができます。

    • max関数

      max(リスト)を実行すると、リストの要素の最大の値を返します。

      print(sum([1, 9, 4, 6, 2]))
      >> 9
      
    • min関数

      min(リスト)を実行すると、リストの要素の最小の値を返します。

      print(sum([1, 9, 4, 6, 2]))
      >> 1
      
  • タプル

    式結合演算子()で要素を並べたものを**タプル(tuple)**と呼びます。

    タプルはリストとほぼ同じように使用できますが、要素を変更できない点が異なります。

    a = (10, 20, 30, 40)
    

    要素は1つだけの場合は、最後にカンマ(,)を付ける必要があります。

    a = (10,)		# a = (10)ではタプルになりません
    

    各要素を取り出すときは、リストと同様[]演算子を使って、0から始まるインデックス番号で取り出します。

    a = (10, 20, 30, 40)
    print(a[1])
    >> 20
    

    リストは要素を変更することができますが、タプルは要素を変更することができません。

    a = [10, 20, 30, 40]
    b = (10, 20, 30, 40)
    
    a[2] = 60		# a = [10, 20, 60, 40]
    b[2] = 60		# TypeError
    
    • tuple()関数

      タプルからリストに変換するにはlist()関数を、リストからタプルに変換するにはtuple()関数をそれぞれ使います。

      print(list((1, 2, 3)))
      >> [1, 2, 3]
      print(tuple([1, 2, 3]))
      >> (1, 2, 3)
      

      リスト同様に、tuple()関数をrange()関数と組み合わせることで連続する数値のタプルを作ることができます。

      a = tuple(range(1, 6))
      print(a)
      >> (1, 2, 3, 4, 5)
      

      また、リスト同様、文字列をtuple()関数の引数にすると、各文字が要素になったタプルを作成することができます。

      a = tuple("ABCDE")
      print(a)
      >> ('A', 'B', 'C', 'D', 'E')
      
    • パック・アンパック

      タプルを作成する時に、以下のように式結合演算子()を省略することができます。

      t = 2, 4, 6
      print(t)
      >> (2, 4, 6)
      

      また、タプルの各要素を取り出しながら直接変数に代入することができます。

      t = 2, 4, 6
      x, y, z = t
      print(x, y, z)
      >> 2 4 6
      

      ただし、変数の数と要素数が合わないとアンパックはできません。

      t = 2, 4, 6
      x, y = t		# ValueError: too many values to unpack (expected 2)
      
      t = 2, 4, 6
      x, y, z, a = t		# ValueError: not enough values to unpack (expected 4, got 3)
      

      パックとアンパックを組み合わせて以下のように複数の値を複数の変数にまとめて代入することができます。

      x,y,z = 1, 3, 5
      print(x, y, z)
      >> 1 3 5
      

      この仕組みを利用して複数の変数の値を交換(スワップ)することができます。

      x, y = 1, 2
      x, y = y, x
      print(x, y)
      >> 2 1
      

      タプルのパック・アンパックの仕組みを使用することで、複数の戻り値を返す関数を作成することができます。

      def divmod(x, y):
      	return x // y, x % y
      
      
      div, mod = divmod(5, 3)
      print(div, mod)
      >> 1 2
      

      タプルだけでなく、リストからも要素をアンパックすることができます。

      a = [0, 2, 4]
      x, y, z = a
      print(x, y, z)
      >> 0 2 4
      

      リストをアンパックする際、*を使うこともできます。

      a = [0, 2, 4]
      print(*a)
      >> 1, 2, 3
      

      アンパックされる左辺に複数の変数を指定する場合、その変数の1つに*を付けることができます。 *を付けられた変数はリストになり、他の変数に設定さない余った要素がリストとして格納されます。

      a = [1, 2, 3, 4, 5]
      x, y, *z = a
      print(x, y, z)
      >> 1 2 [3, 4, 5]
      x, *y, z = a
      print(x, y, z)
      >> 1 [2, 3, 4] 5
      *x, y, z = a
      print(x, y, other)
      >> [1, 2, 3] 4 5
      

演習⌗

それでは実際にjupyter notebookを使用して、演習を行います。

コマンドラインからgit pullを実行してmcc1フォルダに最新のファイルをダウンロードしてください。

ターミナルのコマンドラインからcd mcc1/code/jupyterを実行して、jupyterフォルダに移動し、jupyter notebookを実行してください。

すると、ブラウザが起動し、jupyterのホーム画面が表示されます。

その中からPython演習ドリル200基礎練習71〜80.ipynbをクリックしてください。

そうするとPython演習ドリル200基礎練習71〜80というタイトルの演習問題が表示されます。

課題71から課題80までありますので、課題の内容にしたがって、In[]:の部分にPythonプログラムを書いてください。 書き終わったら、画面上の ▶| Run というアイコンをクリックすると、今書いたPythonプログラムが実行されます。

出力結果が課題の(実行画面)と一致するか確認してください。

どうしても正解がわからないときは、▶プログラム例 をクリックすると、正解例のPythonプログラムが表示されます。

まとめ⌗

今回はPython演習として、リストの続きを行いました。

今後も新しい演習問題を追加していきますので、演習を通じてPythonを学んでいきましょう。