演算子の種類

 プログラムの中で処理を表現するために、演算子を使用します。次のような種類があります。

■ 算術演算子

 値を計算します。

演算子 意味 使用例
+ 一方の数値を他方の数値に足す num1 + num2
- 一方の数値を他方の数値から引く num1 – num2
- 数値の符号を反転させる -num1
* 一方の数値に他方の数値を掛ける num1 * num2
/ 一方の数値を他方の数値で割る num1 / num2
% 一方の数値を他方の数値で割った時の余りを求める num1 % num2
** 一方の数値を他方の数値分乗算する num1 ** num2
// 一方の数値を他方の数値で割り、小数を切り捨てる num1 // num2

算術演算子

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 arithmetictest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #変数の用意
  2. num1 = 10
  3. num2 = 3
  4. #算術演算の結果を表示する
  5. print("加算:{}".format(num1 + num2))
  6. print("減算:{}".format(num1 - num2))
  7. print("反転:{}".format(-num1))
  8. print("乗算:{}".format(num1 * num2))
  9. print("除算:{}".format(num1 / num2))
  10. print("剰余:{}".format(num1 % num2))
  11. print("乗算:{}".format(num1 ** num2))
  12. print("除算(整数):{}".format(num1 // num2))

○ 実行結果

加算:13
減算:7
反転:-10
乗算:30
除算:3.3333333333333335
剰余:1
乗算:1000
除算(整数):3

○ 解説

 6行目で変数num1に格納している値と、変数num2に格納している値を加算しています。その後、コンソールに表示しています。7~11行目も同様に変数の値を計算して表示しています。


■ 代入演算子

 計算結果を代入します。

演算子 意味 使用例
= データを変数に代入する num = 2
+= 変数に格納されているデータと加算し、その結果を変数に代入する num += 2
-= 変数に格納されているデータを減算し、その結果を変数に代入する num -= 2
*= 変数に格納されているデータと乗算し、その結果を変数に代入する num *= 2
/= 変数に格納されているデータと除算し、その結果を変数に代入する num /= 2
%= 変数に格納されているデータと除算し、その余りを変数に代入する num %= 2
**= 変数に格納されているデータとべき乗し、その余りを変数に代入する num **= 2
//= 変数に格納されているデータと除算(整数)し、その結果を変数に代入する num //=2

代入演算子

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 assignmenttest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #代入演算とその結果を表示する
  2. num = 10
  3. print('代入:{}'.format(num))
  4. num += 5
  5. print('加算:{}'.format(num))
  6. num -= 10
  7. print('減算:{}'.format(num))
  8. num *= 2
  9. print('乗算:{}'.format(num))
  10. num /= 2
  11. print('除算:{}'.format(num))
  12. num = int(num)
  13. num %= 3
  14. print('剰余:{}'.format(num))
  15. num **= 4
  16. print('べき乗:{}'.format(num))
  17. num //= 3
  18. print('除算(整数):{}'.format(num))

○ 実行結果

代入:10
加算:15
減算:5
乗算:10
除算:5.0
剰余:2
べき乗:16
除算(整数):5

○ 解説

 2行目は、変数numに値10を格納します。4行目は、先ほど格納した10に5を足して再び変数numに格納します。6行目は、先ほど格納した15に10を引いて変数numに格納します。8行目は、先ほど格納した5に2を掛けて変数numに格納します。10行目は、先ほど格納した10を2で割って変数numに格納します。12行目は、小数の付いた変数numの値を「int」関数を使って整数値に変換しています。13行目は、先ほど格納した5を3で割った余りを求め変数numに格納します。15行目は、先ほど格納した2を4乗して変数numに格納します。17行目は、先ほど格納した16を3で割り、整数部分のみを変数numに格納しています。


■ 比較演算子

 二つの値を比較します。

演算子 意味 使用例
== 2つのデータが等しいことを確認する num1 == num2
!= 2つのデータが等しくないことを確認する num1 != num2
< 一方のデータが他方のデータより小さいことを確認する num1 < num2
> 一方のデータが他方のデータより大きいことを確認する num1 > num2
<= 一方のデータが他方のデータ以下であることを確認する num1 <= num2
>= 一方のデータが他方のデータ以上であることを確認する num1 >= num2
is 一方のオブジェクトが他方のオブジェクトと同一であることを確認する num1 is num2
is not 一方のオブジェクトが他方のオブジェクトと同一でないことを確認する num1 is not num2
in 一方のデータが他方のデータ内に含まれるかを確認する num1 in num2
not in 一方のデータが他方のデータ内に含まれないかを確認する num1 not in num2

比較演算子

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 comparisontest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #変数の準備
  2. num1 = 10
  3. num2 = 5
  4. str = ['カレー', '焼肉', '炒飯']
  5. #比較した結果を表示
  6. print("等しい:{}".format(num1 == num2))
  7. print("等しくない:{}".format(num1 != num2))
  8. print("より小さい:{}".format(num1 < num2))
  9. print("より大きい:{}".format(num1 > num2))
  10. print("以下:{}".format(num1 <= num2))
  11. print("以上:{}".format(num1 >= num2))
  12. print("等しいオブジェクト:{}".format(True is False))
  13. print("等しくないオブジェクト:{}".format(True is not False))
  14. print("含まれる:{}".format('カレー' in str))
  15. print("含まれない:{}".format('ラーメン' not in str))

○ 実行結果

等しい:False
等しくない:True
より小さい:False
より大きい:True
以下:False
以上:True
等しいオブジェクト:False
等しくないオブジェクト:True
含まれる:True
含まれない:True

○ 解説

 7行目は、変数num1の値と変数num2の値が等しいかどうかを判定します。num1には10、num2には5が格納されているので等しくないため、Falseが出力されます。8行目は、変数num1と変数num2の値が等しくないかどうかを判定します。ここでは等しくないと判定され、Trueが出力されます。

 9行目は、変数num1の値が変数num2の値より小さいかどうかを判定します。「10 < 5」なので、Falseが出力されます。10行目は、変数num1の値が変数num2の値より大きいかどうかを判定します。「10 > 5」なので、Trueが出力されます。11行目は、変数num1の値が変数num2の値以下かどうかを判定します。「10 ≦ 5」なので、Falseが出力されます。12行目は、変数num1の値が変数num2の値以上かどうかを判定します。「10 ≧ 5」なので、Trueが出力されます。

 15行目は、リストstrの中のデータに「カレー」が含まれるかどうかを判定します。含まれるので、Trueが出力されます。16行目は、リストstrの中のデータに「ラーメン」が含まれないかどうかを判定します。含まれないので、Trueが出力されます。

 このプログラムのデータを変更して、どのような結果が出力されるかを確認してみましょう。


■ 論理演算子

 論理演算をしてboolean値を算出します。

演算子 意味 使用例
and 2つのブール値の論理積を求める $num1 > 1 and $num1 < 1
or 2つのブール値の論理和を求める $num1 > 1 or $num1 < 1
not ブール値の論理否定を求める not $num1 < $num2

論理演算子

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 logicaltest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #変数の準備
  2. num1 = 10
  3. num2 = 5
  4. #論理演算の結果を表示
  5. ans = not num1 < num2
  6. print("否定:{}".format(ans))
  7. ans = num1 > 0 and num1 < 10
  8. print("論理積:{}".format(ans))
  9. ans = num1 > 0 or num2 < 0
  10. print("論理和:{}".format(ans))

○ 実行結果

否定:True
論理積:False
論理和:True

○ 解説

 6行目は、変数num1と変数num2を比較します。今回は「10 < 5」となるので条件としてはFalseです。しかし、「not」が付いているので否定として扱われ、「Falseではない」つまりTrueと出力されます。

 8行目は、2つの条件判断の結果をもとに判断します。今回は「num1 > 0」で「True」、「num1 < 10」でFalseとなります。この2つの判断の結果を「True and False」のようにさらに判断します。結果はFalseになります。論理積は次のような結果が出力されます。2つの条件がTrueの場合のみTrueとなります。

条件1 条件2 出力
false false false
false true false
true false false
true true true

条件1 and 条件2の出力

 10行目は、2つの条件判断の結果をもとに判断します。今回は「num1 > 0」でFrue、「num2 < 0」でFalseとなります。この2つの判断の結果を「True or False」のようにさらに判断します。結果はTrueになります。論理和は次のような結果が出力されます。2つの条件のうち少なくともどちらか一方がTrueであればTrueになります。

条件1 条件2 出力
false false false
false true true
true false true
true true true

条件1 or 条件2の出力


■ 条件演算子

 論理演算をしてbool値を算出し、2つの値のいずれかを返します。

演算子 意味 使用例
if else 論理演算を処理し、値を返す "-" if num1 < 0 else "+"

条件演算子


■ 文字列演算子

 文字列を結合して、新しい文字列を生成します。

演算子 意味 使用例
+ 文字列を結合する 'abc' + 'def'
* 文字列を繰り返す 'abc' * 3
[n] 文字列の中のn番目の文字を取り出す 'abc'[2]
[n:m] 文字列の中のn番目からm番目の文字列を取り出す 'abcd'[1:2]
[n:] 文字列の中のn番目の文字から最後まで取り出す 'abcd'[1:]
[:m] 文字列の中からm番目までの文字列を取り出す 'abcd'[:2]
[n:m:s] 文字列の中のn番目からm番目までの文字列をs個スキップして取り出す 'abcdef'[1:4:2]

文字列演算子

※ []を使った指定は、リスト配列の操作として使用できます。

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 stringoperatortest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #変数の準備
  2. dinner = '今日の晩御飯はカレーです。'
  3. #文字列を演算する
  4. print(dinner + '福神漬けもあります。')
  5. print(dinner * 3)
  6. print(dinner[3])
  7. print(dinner[7:10])
  8. print(dinner[7:])
  9. print(dinner[:6])
  10. print(dinner[3:9:2])

○ 実行結果

今日の晩御飯はカレーです。福神漬けもあります。
今日の晩御飯はカレーです。今日の晩御飯はカレーです。今日の晩御飯はカレーです。

カレー
カレーです。
今日の晩御飯
晩飯カ

○ 解説

 5行目は、dinner変数に格納されている文字列に、指定した文字列を連結させています。6行目は、dinner変数に格納されている文字列が3回繰り返されます。

 7行目は、dinner変数に格納されている文字列の0から数えて3番目の文字を取り出しています。8行目は、0から数えて7番目から10番目前までの文字列を取り出しています。 9行目は、0から数えて7番目から最後の文字までを取り出しています。10行目は、0番目から6番目前までの文字列を取り出しています。11行目は、0から数えて3番目から9番目前までの文字列を2個飛ばしで文字列を取り出しています。


■ ビット演算子

 計算結果を代入します。

演算子 意味 使用例
& 両方にセットされているビットがセットされる num1 & num2
| とちらかにセットされているビットがセットされる num1 | num2
^ どちらかにセットされており、両方にセットされていないビットがセットされる num1 ^ num2
~ セットされているビットはセットせず、セットされていないビットはセットする ~num
<< セットされているビット・パターンを左にシフトする num << 2
>> セットされているビット・パターンを右にセットする num >> 2

ビット演算子

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 bittest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #変数の準備
  2. num1 = 10
  3. num2 = 5
  4. num3 = 7
  5. #ビット演算の結果を表示
  6. ans = num1 & num2
  7. print("ビット積:{}".format(ans))
  8. ans = num1 | num2
  9. print("ビット和:{}".format(ans))
  10. ans = ~num1
  11. print("否定:{}".format(ans))
  12. ans = num1 ^ num3
  13. print("排他的論理和:{}".format(ans))
  14. ans = num2 << 2
  15. print("左シフト:{}".format(ans))
  16. ans = num1 >> 2
  17. print("右シフト:{}".format(ans))

○ 実行結果

ビット積:0
ビット和:15
否定:-11
排他的論理和:13
左シフト:20
右シフト:2

○ 解説(整数値を8bitとして解説します)

 7行目は、変数num1と変数num2のビット積を計算します。「00001010」と「00000101」のビット列を論理積演算するため、「00000000」となり、10進数で0となります。9行目は、変数num1と変数num2のビット和を計算します。「00001010」と「00000101」のビット列を論理和演算するため、「00001111」となり、10進数で15となります。

 11行目は、変数num1の否定を計算します。「00001010」のビット列を論理否定演算するため、「11110101」となり、10進数で-11となります。13行目は、変数num1と変数num3の排他的論理和を計算します。「00001010」と「00000111」のビット列を排他的論理和演算するため、「00001101」となり、10進数で13となります。

 15行目は、変数num2を左にシフトします。「00000101」のビット列を左に2ビット分シフトするため、「00010100」となり、10進数で20となります。左にシフトするたびに10進数での2倍の計算をします。17行目は、変数num1を右にシフトします。「00001010」のビット列を右に2ビット分シフトするため、「00000010」となり、10進数で2となります。右にシフトするたびに10進数での2で割る計算をします。

前へ   次へ