|
ホーム 戻る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 %を使えば余りが出力される。 1
代入演算子
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が真でないとき真
演算子:ひとつ以上の値から別の値を引き出す
ホーム 戻る |