見出し画像

Python勉強記(4) - 基本型の補足・変数



基本型の補足

bool型

基本的な型についてほとんど説明したと思ったら、重要なものを忘れていました。
例えば、以下のような不等式は真(True)または偽(False)のいずれかの値を持ち、これらはbool型と呼ばれます。

>>> 2 > 1 
True
>>> 2 < 1
False
>>> type(2 < 1)
<class 'bool'>

bool型は条件式での使用が一般的です。
少し先取りになりますが、Pythonで条件式を用いた簡単な関数を作成してみましょう。

def collatz(n):
    if (n % 2 == 0):  # nを2で割った余りが0 (nが偶数)
        return n//2
    else:            # n が偶数ではない
        return 3*n + 1

c = 27
while (c != 1):  # c1に達するまで、漸化式を計算
    print(c, end=" ")
    c = collatz(c)

上記の例には2つの条件式があります。

2行目のif(…)の中身は、式がTrueの場合は直下のブロックを、Falseの場合はelse: の下のブロックを実行します。

8行目のwhile(…)の中身は、Trueである間は直下のブロック2行を繰り返し、(c==1 になったらブロックを抜けます。)

関数やブロックの概念は重要ですが、今は一旦忘れても構いません。

collatz()関数では、以下の数列の漸化式を定義し、数列の値が1になるまで計算結果を印刷し続けます。


$$
c_{n+1} =
\begin{cases}
\frac{c_n}{2}, & \text{if } c_n \text{ is even} \\
3c_n + 1, & \text{if } c_n \text{ is odd}
\end{cases}
$$

コラッツ予想とは、任意の初期値から始めても必ず1に到達し(そして1→4→2→1のループを無限に繰り返す)、その予想が正しいかどうかを示す証明も反例もまだ見つかっていない数学の未解決問題です。

なお、boolはブール代数(論理演算を体系的に扱う数学の一分野)を創始したジョージ・ブールにちなんで名付けられました。

その他

リストやタプルなど、基本的な型を要素に持つ様々なデータ構造が存在します。それらが使用される際には、その都度説明を行います。

変数

これまでに見た基本的な数値型は、プログラム内で変数に割り当てて使用されます。
数学の変数と同じように、a = 1やb = "Hello"などと使用します。

ルール

Pythonでの変数の命名規則は以下のとおりです。

  • 英数字とアンダースコア「_」を組み合わせて命名できる。

  • 実は日本語も使える(お勧めはしない)

  • 1文字目は数字であってはならない。

  • Python のキーワード(予約語) は変数に使えない。

以下に、変数の使用規則を示します。

  • 変数の型は、その変数に代入された値の型によって決定されます(動的型付け)。

  • 変数は同じ型、または異なる型の値で上書き可能。

  • 変数は値が代入されていないと使用できない。

ルールを破るとエラーが出力されて知らせてくれます。
「おそらく...が間違っていますね?」という親切なメッセージですが、的外れなことを言われると少しイラッとしますね(笑)

検証のために、色々と試してみましょう。

>>> # 例

>>> val_01=1
>>> val_02='hello'
>>> print(val_01,val_02)
1 hello

>>> print(type(val_01),type(val_02)) # 
<class 'int'> <class 'str'>

>>> val_01=val_01+val_02 # エラー
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

>>>val_01=str(val_01)+val_02 # val_01をstr型に変換する。
>>> val_01
'1hello'

>>> del val_01 # del 文で変数val_01を削除できる。
>>> val_01   # 未使用の変数使用はエラー
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'val_01' is not defined. Did you mean: 'val_02'?

>>> # 日本語名の変数を試す
>>> 変数='へんすう'
>>> 変数
'へんすう'
>>> type(変数)
<class 'str'>

続き

演算子、組み込み関数、基本構文の復習をして、自分で関数を作成できるようになりたいと思います。
以下は文字列を連結する演算子(+)の例です。

>>> a="Hello,"
>>> b="world"
>>> a+b
'Hello,world'

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?