乙Py先生のプログラミング教室
初学者のためのプログラミング学習サイト

python

                 11.予約語

予約語というのはプログラム内であらかじめ使われてしまっている
言葉のことで、プログラムの中では特別な意味を持つ言葉になります。

予約語

In [1]:
# 予約語の一覧を出す
__import__('keyword').kwlist
Out[1]:
['False',
 'None',
 'True',
 'and',
 'as',
 'assert',
 'break',
 'class',
 'continue',
 'def',
 'del',
 'elif',
 'else',
 'except',
 'finally',
 'for',
 'from',
 'global',
 'if',
 'import',
 'in',
 'is',
 'lambda',
 'nonlocal',
 'not',
 'or',
 'pass',
 'raise',
 'return',
 'try',
 'while',
 'with',
 'yield']

この予約語は変数名や関数名などに用いることはできません。

jupyter notebook 上で予約語を使うと
緑色に表示が変わるので、気付けるかと思います。

In [ ]:
for in with

組み込み関数

In [2]:
# 組み込み関数を表示する
dir(__builtins__)
Out[2]:
['ArithmeticError',
 'AssertionError',
 'AttributeError',
 'BaseException',
 'BlockingIOError',
 'BrokenPipeError',
 'BufferError',
 'BytesWarning',
 'ChildProcessError',
 'ConnectionAbortedError',
 'ConnectionError',
 'ConnectionRefusedError',
 'ConnectionResetError',
 'DeprecationWarning',
 'EOFError',
 'Ellipsis',
 'EnvironmentError',
 'Exception',
 'False',
 'FileExistsError',
 'FileNotFoundError',
 'FloatingPointError',
 'FutureWarning',
 'GeneratorExit',
 'IOError',
 'ImportError',
 'ImportWarning',
 'IndentationError',
 'IndexError',
 'InterruptedError',
 'IsADirectoryError',
 'KeyError',
 'KeyboardInterrupt',
 'LookupError',
 'MemoryError',
 'NameError',
 'None',
 'NotADirectoryError',
 'NotImplemented',
 'NotImplementedError',
 'OSError',
 'OverflowError',
 'PendingDeprecationWarning',
 'PermissionError',
 'ProcessLookupError',
 'RecursionError',
 'ReferenceError',
 'ResourceWarning',
 'RuntimeError',
 'RuntimeWarning',
 'StopAsyncIteration',
 'StopIteration',
 'SyntaxError',
 'SyntaxWarning',
 'SystemError',
 'SystemExit',
 'TabError',
 'TimeoutError',
 'True',
 'TypeError',
 'UnboundLocalError',
 'UnicodeDecodeError',
 'UnicodeEncodeError',
 'UnicodeError',
 'UnicodeTranslateError',
 'UnicodeWarning',
 'UserWarning',
 'ValueError',
 'Warning',
 'ZeroDivisionError',
 '__IPYTHON__',
 '__build_class__',
 '__debug__',
 '__doc__',
 '__import__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 'abs',
 'all',
 'any',
 'ascii',
 'bin',
 'bool',
 'bytearray',
 'bytes',
 'callable',
 'chr',
 'classmethod',
 'compile',
 'complex',
 'copyright',
 'credits',
 'delattr',
 'dict',
 'dir',
 'divmod',
 'dreload',
 'enumerate',
 'eval',
 'exec',
 'filter',
 'float',
 'format',
 'frozenset',
 'get_ipython',
 'getattr',
 'globals',
 'hasattr',
 'hash',
 'help',
 'hex',
 'id',
 'input',
 'int',
 'isinstance',
 'issubclass',
 'iter',
 'len',
 'license',
 'list',
 'locals',
 'map',
 'max',
 'memoryview',
 'min',
 'next',
 'object',
 'oct',
 'open',
 'ord',
 'pow',
 'print',
 'property',
 'range',
 'repr',
 'reversed',
 'round',
 'set',
 'setattr',
 'slice',
 'sorted',
 'staticmethod',
 'str',
 'sum',
 'super',
 'tuple',
 'type',
 'vars',
 'zip']

これを変数名に用いてしまうと
その関数の機能を、変数で上書きしてしまい
その関数が使えなくなってしまう。

※間違えて使用してしまったらノートッブックを再起動しましょう。

変数名の宣言は英単語2個以上にすることで
こういった問題を回避することができたりするので推奨。

例:
magic_spell_name
attack_point

                  10.変数

プログラムでは入力されたデータを使い回す機能があります。
それが変数という概念です。

変数を用いることで入力したデータを再利用できるようになります。

変数を宣言と値の代入

変数名 = 値

= は代入を表す演算子(代入演算子)
= の左側に右側を代入する。

In [1]:
a = 12345
b = 23456

個数が合えば複数同時に宣言と代入が行える。

In [2]:
a,b,c = 4,5,6
d,e,f = '10','20','30'

変数名に使用できる文字

a - z のアルファベット(大文字と小文字)
0 - 9 までの数字
_ (アンダースコア)

変数名は自分で考えて付けるものなのでなんでも良いですが
中に格納するデータがどんなものかを考えて名称をつけるのが良いでしょう

この講義ではアンダーバーで2つ以上の英単語を用いることを推奨します。
例:
magic_spell_name
attack_point

なお変数名は予約語や組み込み関数名に該当するものでなければ
なんでも付けることができます。

予約語などについては次項で

変数の使い方

In [3]:
# 変数 a に 数値の12345 を代入する
a = 12345
# 変数 b に 数値の23456 を代入する
b = 23456
# 変数 a と b を足した結果を出力する
print(a + b)
35801
In [4]:
# 変数c にa + b の結果を代入する
c = a+b
# 結果
print(c)
35801

同じ変数名に値を代入すると上書きされる。

In [5]:
# 変数 a に数値の123を代入
a = 123
print(a)

# 変数 a に数値の234を代入
a = 234
print(a)
123
234
In [6]:
a,b = 12345,23456
print(a)
print(b)

# a + b の結果を再度 a に代入する(上書き)
a = a+b
print(a)
12345
23456
35801

プログラムではデータの形も重要!!

文字と数値は一緒に計算できない

In [7]:
a = '文字'
b = 1
print(a + b)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-7-2c4cb487c08a> in <module>()
      1 a = '文字'
      2 b = 1
----> 3 print(a + b)

TypeError: Can't convert 'int' object to str implicitly

TypeError : 変数 a と b のデータの形が違うので計算できない(変換できない)という意味合いのエラー

数値の型と文字の型ではデータの形が違うため一緒にすることができない

データの形の確認

type 関数を使って変数のデータ型を確認する

type(変数名)

In [8]:
# 変数aとcは数値、bは文字列を代入
a,b,c = 1 , '3' , 4
print(type(a))
print(type(b))
print(type(c))
<class 'int'>
<class 'str'>
<class 'int'>

int は整数
str は文字列を表す

変数に格納したもののことを「オブジェクト」と呼んだりもします。

9.インデックス

インデックスとはプログラム上で何番目?
というのを表す数字です。

インデックスを用いることでプログラムでは
様々なことが行えます。


                     インデックスの表記

四角カッコ で囲みその中に数値を入力する
例:
  [5]

文字のインデックスの場合

In [1]:
print('はじめの一歩'[5])

インデックス番号目の文字を取り出すことができる。

インデックスの数え方

インデックスは 0 から始まるので

文字列の最初の文字を取りたい場合インデックスは 0 
2番目を取りたい場合インデックスは  1になる

※n番目のインデックス値はn-1と、1つズレるので注意

最後の文字を指定する場合は -1 で指定でき
マイナス を付けると末尾から数えることができる。

In [2]:
# 最初
print('あいうえお'[0])

# 2番目
print('あいうえお'[1])

# 最後
print('あいうえお'[-1])

#  最後から数えて3番目
print('あいうえお'[-3])
あ
い
お
う

存在しないインデックス値を指定するとエラーになる。

In [3]:
print('あいうえお'[7])
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-3-35481bea2f07> in <module>()
----> 1 print('あいうえお'[7])

IndexError: string index out of range

IndexError : インデックス値が範囲外の場合に起こるエラー

スライス

Pythonではインデックスを使って
範囲指定でデータを取り出すことができる機能があり
「スライス」と呼んでいる。

スライスの書き方:

[n:m] n番目からm番目まで
[n:]  n番目以降
[:n] n番目まで
[n:m:o] n番目からm番目までo個とばして

In [4]:
# 3番目から5番目
print('あいうえおかき'[2:5])

# 2番目以降
print('あいうえおかき'[1:])

# 3番目まで
print('あいうえおかき'[:3])

# 最初から最後の1つ手前まで
print('あいうえおかき'[0:-1])

# 最初から最後の1つ手前までで1つ飛ばして
print('あいうえおかき'[0:-1:2])
うえお
いうえおかき
あいう
あいうえおか
あうお

8.文字

文字列の取り扱いも演算になります。

プログラミングを簡単に表現すると
壮大な文字列操作を行うもの 
と表現することができると思います。

Pythonで文字の取り扱い方
文字列として扱うには
シングルクォートかダブルクォートで囲む


In [1]:
'最初の一歩'
Out[1]:
'最初の一歩'
In [2]:
"二歩目"
Out[2]:
'二歩目'

プログラムでは文字と数値は別もの

囲まないとエラーになる

In [3]:
三歩目
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-3-c86df676a821> in <module>()
----> 1 三歩目

NameError: name '三歩目' is not defined

プログラム上で文字を表示させたい場合は
print関数を使う。

関数では() カッコの中に入れるものを 「引数」と呼ぶ

In [4]:
print('あの')
print('バランスの良い')
print('山本選手が!!')
あの
バランスの良い
山本選手が!!

シングルクォートとダブルクォートの使い分け
文字にシングルクォートを用いたい場合はダブルクォートで囲みます
文字にダブルクォートを用いたい場合はシングルクォートで囲みます

In [5]:
print("moco’s kitchen")
print('この " とはなんて読むんですか?')
moco’s kitchen
この " とはなんて読むんですか?

文字は +(足す) と *(かける) の演算子を用いることができます。

足した場合は 文字列の連結
かけた場合は文字列の繰り返し

In [6]:
print('ダチョウ' + '倶楽部')
print('聞いてないよ' * 10)
ダチョウ倶楽部
聞いてないよ聞いてないよ聞いてないよ聞いてないよ聞いてないよ聞いてないよ聞いてないよ聞いてないよ聞いてないよ聞いてないよ

文字と数値をひとまとめに取り扱うことができません。

文法上間違いのためエラーが発生します。

In [7]:
print('M' + 1 + '知らんぷり')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-7-a36c92488eb2> in <module>()
----> 1 print('M' + 1 + '知らんぷり')

TypeError: Can't convert 'int' object to str implicitly

シングルウォートなどで囲み、数字として扱えば
文法のエラーを回避することができます。

In [8]:
print('M' + '1' + '知らんぷり')
M1知らんぷり

print関数の仕組み

print関数は最後に改行コードが含まれる形になるので
改行コードを出したくなければ
end= を付け足して改行コードの代わりになるものを入力する。
end='' とした場合は空白が出力される

In [9]:
print("無駄", end="")
print("無駄")
print("無駄", end="")
無駄無駄
無駄

コメント

Pythonでは # (シャープ記号) はコメントの機能を表す文字で
これを入力した以降のコードは無視される

これを利用してプログラム内にコメントを残すことができる。
コメントは英語で入力すると カッコイイ www

In [10]:
### ここがコメント
print('上記のコメント行は実行時に影響しない') #こんな所にコメントしてもなにも起きない
# ここもコメント
上記のコメント行は実行時に影響しない

まとめてコメントしたいときは
macならコマンドキーを押しながらスラッシュキー
windowsはコントロールキーを押しながらスラッシュキー

7.演算

プログラミングの基本は「演算」です。
演算とは様々な計算を行うことです。

プログラムの基本は
1.入力
2.演算
3.出力
この3つ

プログラムというのは基本的には文字と数値を組み合わせて入力し
何かしらの計算を行い、その結果を出す、という仕組みになっています。
演算は大きく分けると「文字」と「数値」の計算を取り扱います。

四則計算
加算(足し算)) + 
減算(引き算) - 
乗算(掛け算) * 
除算(割り算) / 
剰余(余り) % 
べき乗 ** 


In [1]:
# 足し算(加算)
1+2
Out[1]:
3
In [2]:
# 引き算(減算)
1-3
Out[2]:
-2
In [3]:
# かけ算(乗算)
2*3
Out[3]:
6
In [4]:
# x は使えないのでエラーになる
2 x 3
  File "<ipython-input-4-8f1eaf61a7c2>", line 2
    2 x 3
      ^
SyntaxError: invalid syntax

SyntaxError は文法間違いの際に発生するエラー

In [5]:
# 割り算(除算)
10/3
Out[5]:
3.3333333333333335
In [6]:
# 割り算(余りなし、切り捨て除算)
10//3
Out[6]:
3
In [7]:
# べき乗
2**3
Out[7]:
8
In [8]:
# ルート
2**0.5
Out[8]:
1.4142135623730951
In [9]:
# 剰余(割った際の余り)
5%3
Out[9]:
2
In [10]:
# 掛け算や引き算の優先順位は算数と一緒
2 * 3 + 4
Out[10]:
10

足す、引くを優先したい場合は () カッコを用いる

In [11]:
2 * (3 + 4)
Out[11]:
14

計算する際に使う数値や文字のことを「リテラル」
プラス


計算する際に使う数値や文字のことを「リテラル」
プラスなどの記号( + - など)は「演算子」と呼んでいます。

そのなかでも四則計算に使われるのは
「算術演算子」(または代数演算子)と読んでいます。

そのほか
・ビット演算子
・代入演算子
・比較演算子
・ブール演算子
・条件演算子
など、演算子にはたくさん種類があります。

このページのトップヘ