ホーム     戻るll

第三章 数と計算

"春がきたのに、さよならね・・・・

春になったらという約束を、私だって何度したかわからない。

そして数知れないそんな約束のうち、いったい幾つが果たされたことだろう。

久世光彦

数値とは
整数、浮動小数点(

jitusuu 、複素数、真偽値の4種類。
演算子:
減算 −
     加算 +
     乗算 *
     除算 /
     あまり %

算術関数:三角関数など計算できる。
from math inport

整数:integer負から正までの値を表す。端数はない。maxintは約20憶。+−で40憶の値を表示できる。

   
 浮動小数点:同じ値の二つの値が==等しくないと判断される場合がある。近似値であるため。比較するときは端数を丸めてから。

 プール値boolean:真trueと偽falseの二つの値をとる。
A and B   両方が真なら真
A or B    いずれか、両方か真なら真
A == B  等しい
A != B  等しくない
A <> B  同上
not B     否定 Bが真でないとき真

 

 演算子:ひとつ以上の値から別の値を引き出す

1) 数値処理としてのpython

(a)「数値リテラル
1234、−24,0                                      短整数
999999999999999999999999999L                     長整数 
1.23,3.14e-10,4e210,4.0e+210                    浮動少数点数

(b) ビルトインツールとエクステンション

ツール

算術演算子:減算 −
        加算 +
        乗算 *
        除算 /
        あまり %

数学関数(ビルトイン関数)
pow、absなど

ユーティリティモジュール
random、mathなど

(c)pythonの式と演算子

lamda  引数:式              無名の関数の作成

x or y                   論理和

x and y                  論理積

not x                    論理否定

x < y 、 x <= y、 x > y   比較演算子、オブジェクトの比較演算子

x==y、x<>y、x!=y、x is y   シーケンスのメンバであるかを確認する

x is not y、x in y、x not in y 演算子

x * y , x % y , x / y                       乗算、剰余、除算

x[ i ], x[ i : j] , x.attr , x ( ...)           インデクシング、スライシング、関数呼び出し

(...) ,  [ ...] , {... }, '... '                     タブル、リスト、ディクショナリ、文字列への変換

(d)演算子の組合せ(優先順位)

  カッコを使う

(e)式中での型の混在

 40+3.14
43.140000000000001

より複雑な型の方にオペランドが揃えて変換される

数値型以外の値は変換されない

>>> 'abc'+12

Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    'abc'+12
TypeError: cannot concatenate 'str' and 'int' objects

(f)変数と演算

変数は、はじめに値が代入された時点で作成される
変数を使って式を書くと、演算にはその変数に代入された値が使用される
値が代入されていない変数を式で使用することはできない。
値を代入せず、変数の名前だけを宣言することはない。

>>> a=3
>>> b=5
>>> a+1,a-1
(4, 2)           2っの式がカンマで区切られて与えられたので答えはタプル
>>> b+3,b/2
(8, 2)
>>> a % 2,b**2
(1, 25)

>>> b / 2 + a
5
>>> print b / (2.0 +a)

1.0

>>> "%e" % num           文字列のフォーマット
'3.333333e-001'
>>> "%2.2f" % num
'0.33'

>>> import math           数値処理のためのツール
>>> math.pi,math.e
(3.1415926535897931, 2.7182818284590451)

>>> math.sin(2 * math.pi / 180)
0.034899496702500969
>>> abs(-42),2**4,pow(2,4)
(42, 16, 16)
>>> int(2.567),round(2.567),round(2.567,2)
(2, 3.0, 2.5699999999999998)

例 1

>>>print 5 + 3

>>> 8

>>> print ((8*6) + (5-4))/(4+5)        丁寧にカッコを使えば演算子の優先順位にかかわらず正しい計算ができる


5

>>> print 7/3                            pythonでは小数点のない数値はすべて「integerとして扱われる
2
>>>

>>> print 7.0/3             分子か分母に浮動小数点を使えば、小数点以下が表示される

2.33333333333

>>> 7 % 3                                %を使えば余りが出力される。

代入演算子

a = b

a +=b

a -= b

a * = b

a / = b

a % = b

 

>>> a = 1
>>> b =2
>>> a +=b
>>> a
3
>>> a -=b
>>> a
1
>>> a *= b
>>> a
2
>>> a %= b
>>> a
0

例 1  =は変数に値を代入する

>>> width=20
>>> hight=5*9
>>> width*hight
900

例 2   不思議なこと

>>>  1*2*3
6
>>> 1+2+3
6
>>>
1+2+3+4+5+6+7+8*9
100
>>> 98-76+54+3+21
100

例3   だんだん小さくなる

>>> 1.0/2
0.5
>>> 1.0/3
0.33333333333333331
>>> 1.0/4
0.25
>>> 1.0/5
0.20000000000000001
>>> 1.0/6
0.16666666666666666
>>> 0.0/0

Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
 
例4    ゼロ 無 存在の否定

>>> x=1
>>> x**2-x
0
>>> x**2-1
0
>>> x*(x-1)
0
>>> (x+1)*(x-1)
0
>>>

>>> 1**-1
1.0
>>> x=1
>>> x**-x
1.0
>>> x**-1
1.0
>>> (x**-x)/(x-1)

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    (x**-x)/(x-1)
ZeroDivisionError: float division

>>> x**(x-1)
1

例5    べき乗

>>> a=2
>>> b=3
>>> (a-b)*(a-b)
1
>>> a**2
4
>>> (a-b)
-1
>>> (a-b)**2
1
>>> a**2+b**2
13
>>> a**2+b**2-2*a*b
1
>>>

例 6 計算を続ける

>>> tax = 12.5/100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_,2)
113.06
>>>

(2)書式文字列

 >>> print '合計は', 23+56      データの区切りにカンマをつけ、文字列を加える。

合計は 79
>>>

>>> print "%d    %d  の和は %dである" % (8,9,8+9)    %:書式化文字 d;十進法
8  と  9  の和は 17である

 書式化

%s      文字列
%x   16進数 
%0.2f  浮動小数点以下2桁の浮動少数点数
%4d   数値の前をスペースで埋めて4けたにする
%04d  数値の前を0で埋めて4けたにする

%書式化文字の使用例 

 >>> print "%0.2f " % 123.456
123.46
>>> print "%0.2f" % 123.4
123.40


>>> print "%9.2f" % 123.456                9桁で計算
   123.46
>>> print "%0.7f" % 123.456
123.4560000

 

 整数:integer負から正までの値を表す。端数はない。maxintは約20憶。+−で40憶の値を表示できる。

 IDLE 1.2.2     
>>> print 20000000000*2
40000000000
>>> print 2000000000000000*2
4000000000000000
>>> 2**2                              **べき乗  
4
>>> 56**5
550731776

 浮動小数点:同じ値の二つの値が==等しくないと判断される場合がある。近似値であるため。比較するときは端数を丸めてから。

 プール値boolean:真trueと偽falseの二つの値をとる。
A and B   両方が真なら真
A or B    いずれか、両方か真なら真
A == B  等しい
A != B  等しくない
A <> B  同上
not B     否定 Bが真でないとき真

 

 演算子:ひとつ以上の値から別の値を引き出す

 ホーム     戻る