2022年度計算機演習A・B

第3回:Python入門3

0. 変数名に関する注意(前回の補足)

前回の授業資料で変数の命名ルールについて扱いましたが、変数名として使用できない予約語(キーワード)の一覧は次のようになっています。予約語を変数名として使おうとすると、エラーが発生します。

他の命名ルールに従ってさえいればこれらの予約語以外は何でも使用可能ではありますが、なるべく変数名としての使用を避けるべきものもあります。それは、組み込み関数(Pythonにおいて標準で用意されている関数)の名前です。

次のリンクから、組み込み関数の一覧を確認することができます。https://docs.python.org/ja/3.8/library/functions.html

組み込み関数の名前を変数名として使った場合にエラーや警告の表示は無く、関数としての役割が上書きされてそれ以降は関数としての使用ができなくなります。特にlist、max、min、range、sumなどは気付かずに変数名として使いがちですので、注意しましょう。

1. if文による条件分岐

1.1. if文の基本

プログラムの中で条件分岐を行いたい場合には、if文を使います。

if文の最も基本的な書き方は、次の通りです。

if 条件式:
    条件式が真の場合の処理
    …

前回説明したfor文と同様に、if文のブロックに含めるべき行は行頭にインデント([Tab]または半角スペース4個)を入れる必要があります。ただし、JupyterLabでNotebookを扱う限りは、コロンの後で改行をするとインデントが自動的に入力されるようです。逆に、if文のブロックに含めるべきでない行は、行頭のインデントを消さなくてはなりません([BackSpace])。

ほとんどのプログラミング言語ではインデントはただのマナーですが、Pythonではインデントの有無がコードの実行に影響します。

([Ctrl]+[Enter]を使うと、セルの移動を伴わずにコードの実行ができます。同じセルを複数回実行する際に便利です。)

1.2. 条件式の書き方

条件式は、その真偽に応じてTrueまたはFalse(真理値型のオブジェクト)を値に取ります。

条件式で使用できる関係演算子(比較演算子)は、次の表の通りです。

関係演算子 意味
== 等しい
!= 等しくない
>= 以上
> より大きい
<= 以下
< より小さい

条件式で使用できる論理演算子は、次の表の通りです。

論理演算子 意味
and かつ
or または
not でない

複数の論理演算子を併用する場合は、必要に応じて演算の優先順位を変えるために半角の括弧を使います。

次のコードに示すように、Pythonでは数学で使用するような連結した等式・不等式をそのまま書くことができます。

1.3. elseとelifの使用

if文ではオプションとして、次のようにelseとelif(else ifに由来)を使うことができます。elifは複数個の使用も可能です。

if 条件式:
    条件式が真の場合の処理
    …
else:
    条件式が偽の場合の処理
    …
if 条件式1:
    条件式1が真の場合の処理
    …
elif 条件式2:
    条件式1が偽かつ条件式2が真の場合の処理
    …
else:
    条件式1が偽かつ条件式2が偽の場合の処理
    …

演習1

if文を使って、点数(0以上100以下の整数)が与えられたときに次の表に従った評価を表示するコードを書いてください。

点数 評価
90点~100点
80点~89点
70点~79点
60点~69点
0点~59点 不可

2. while文による繰り返し

2.1. while文の書き方

プログラムの中で特定の処理をある条件が成り立つ間繰り返したい場合には、while文を使います。

while文の書き方は、次の通りです。

while 条件式:
    条件式が真の間繰り返して行う処理
    …

ここで、「条件式」はif文と同じように書けばよいです。

2.2. 無限ループ

while文がfor文と最も違うのは、繰り返しの回数が不定であることです。場合によっては無限ループ(繰り返しがいつまでも終わらない状態)が発生してしまうため、十分に注意する必要があります。

もし無限ループに陥ってしまった場合は、画面上の四角ボタンでカーネルの中断を試み、それがダメなら丸い矢印のボタンでカーネルを再起動すればよいです。

演習2

while文を使って、条件「nの階乗が5000以上」を満たす最小のnとその階乗の値を求めてください。ただし、階乗を求める関数を使わないこと。

3. ライブラリの使用と数学関数

3.1. ライブラリとは

Pythonにおけるライブラリとは、「Pythonの機能拡張のために用意されたプログラムの集まり」のことです。様々なライブラリを使用することで、組み込み関数以外にも多くの便利な関数が使えるようになります。

※ライブラリの類語として、モジュールとパッケージがあります。ここではこれらの厳密な違いには触れません。

あるライブラリに含まれる関数を使用したい場合は、

import ライブラリ名

として該当のライブラリをインポートした上で、ライブラリ名.関数名のようにして使います。

ただし、import文を書けばどのライブラリでも使えるというわけではなく、プログラムの実行環境に事前にインストールされたもののみが使用可能です。CESのプログラミング機能では、メジャーなものは概ね使えるようになっています。

※厳密には、ライブラリは標準ライブラリと外部ライブラリに分けられます。前者はPython自体に付属しているためインストールなしに使えるもので、後者は事前のインストールが必要です。

3.2. mathライブラリと数学関数

mathという標準ライブラリには、数学的な計算をするための様々な関数が集められています。

4. 関数の定義

4.1. 関数とは

これまでにも関数という言葉を度々使ってきましたが、プログラミングにおける関数とは「与えられた値(引数)に対して特定の処理を行ってその結果(戻り値)を返す」ような命令のことです。ただし、引数あるいは戻り値が無い関数も存在します。

次のコードでは、いくつかの組み込み関数を使用しています。

4.2. 関数定義の方法

Pythonでは、ユーザー自らが新しい関数を定義することができます。

関数定義の基本的な書き方は、次の通りです。

def 関数名(引数1,引数2,…):
    関数の処理
    …
    return 戻り値

for文、if文、while文と同様に、def文でもインデントが重要です。

引数あるいは戻り値が無い関数も定義可能です。

演習3

任意の3つの数に対してそれらの最小値を返す関数my_min3を定義してください。ただし、関数minおよびmaxを使わないこと。定義した関数を呼び出す例も付けてください。

演習4(オプション)

任意の複数の数からなるリストに対してその要素の最大値を返す関数my_maxを定義してください。ただし、関数maxおよびminを使わないこと。定義した関数を呼び出す例も付けてください。

第3回レポート課題

演習1~演習4に取り組んでください。