情報学部 | 菅沼ホーム | Python と C/C++ 目次 |
> Python
> py -2 # Python 2.* の実行 > py -3 # Python 3.* の実行
01 >>> print(2 + 3) 02 5 03 >>> 3 + 4 04 7 05 >>> 10 + _ 06 17 07 >>> a = 10 08 >>> if a == 10: 09 ... print(a) 10 ... 11 10 12 >>> 'abc' 13 'abc'
# -*- coding: UTF-8 -*- a = 10 b = 20 print(a + b)
py -3 cal1.py # 一般形: python ファイル名 [arg] ...
# -*- coding: UTF-8 -*- def add(a, b): c = a + b print(c) def sub(a, b): c = a - b print(c)
>>> import cal2 >>> cal2.add(2,3) 5 >>> cal2.sub(2,3) -1
>>> from cal2 import add
>>> from cal2 import *
a = abc + efg * xxx \ + aaa - bbb / ccc \ + yyy / 30 + hhh # ~ に関する計算
01 if (条件) { 02 a = 10; 03 b = 20; 04 } 05 else { 06 c = 30; 07 d = 40; 08 }
01 if 条件 : 02 a = 10 03 b = 20 04 else : 05 c = 30 06 d = 40
a = 10 # 変数 a に 10 を代入
# -*- coding: UTF-8 -*-
""" コメント・・・ コメント・・・ """
>>> "文字列" '文字列' >>> '文字列' '文字列' >>> b"abc" b'abc' >>> b"文字列" # エラー( ASCII 文字だけ可能)
>>> 2 * "abc" + "efg" + "hij" 'abcabcefghij' >>> 2 * "abc" "efg" "hij" 'abcefghijabcefghij'
>>> """ ... abc ... def ... ghi ... """ '\nabc\ndef\nghi\n'
>>> 15 15 >>> 0xf 15 >>> 0o17 15 >>> 0b1111 15
>>> True True >>> False False >>> 10 + True 11 >>> 10 + False 10
>>> 12345.01 12345.01 >>> 1234501e-2 12345.01
>>> 3.14j # 3.14J でも良い 3.14j >>> 2.5 + 3.14j (2.5+3.14j) >>> complex(2.5, 3.14) (2.5+3.14j) >>> complex(2.5, 3.14).real # 実数部の参照(参照だけ可能) 2.5 >>> complex(2.5, 3.14).imag # 虚数部の参照(参照だけ可能) 3.14
>>> a = 10 >>> c = complex(1, 2) >>> a = "abc"
>>> x, y = 10, 3 * 4 >>> print(x, y) 10 12
>>> import math # math モジュールの取り込み >>> math.sqrt(2) 1.4142135623730951 >>> import math as ma # math モジュールを ma というモジュール名として取り込む >>> ma.sqrt(2) 1.4142135623730951 >>> from math import sqrt, fabs # math モジュールからメソッド sqrt,fabs を取り込む >>> sqrt(2) 1.4142135623730951 >>> fabs(-10) 10.0 >>> from math import * # math モジュールからすべてのメソッドを取り込む >>> sqrt(2) 1.4142135623730951 >>> pow(2, 10) 1024.0
>>> a = 10 >>> a += 5 # a = a + 5 と同じ >>> a 15 >>> a / 2 7.5 >>> a // 2 7
< : より小さい a < b > : より大きい a > b <= : 以下 a <= b >= : 以上 a >= b == : 等しい a == b != : 等しくない a != b
is : 同じオブジェクト a is b is not : 同じオブジェクトではない a is not b
式1 or 式2 : 論理和(式1 または 式2 が True であれば True,そうでなければ False) 式1 and 式2 : 論理積(式1 及び 式2 が True であれば True,そうでなければ False) not 式 : 否定(式 が False であれば True,そうでなければ False)
<< : 左にビットシフト a << 3 >> : 右にビットシフト a >> 3 & : ビットごとの論理積 x & y | : ビットごとの論理和 x | y ^ : ビットごとの排他的論理和 x ^ y ~ : 1 の補数( 0 と 1 の逆転) ~x
01 #****************************/ 02 #* 1 次元配列 */ 03 #* coded by Y.Suganuma */ 04 #****************************/ 05 # -*- coding: UTF-8 -*- 06 from array import * 07 import numpy as np 08 # リスト 09 print ("リスト") 10 a1 = [] 11 a2 = list() 12 print(" 空のリスト a1: " + str(a1) + ",a2: " + str(a2)) 13 14 a3 = [1, 2, 3] 15 print(" 角括弧とカンマの使用 a3: " + str(a3)) 16 17 a4 = list("abcd") 18 a5 = list(("a", "b", "c", "d")) 19 print(" list(iterable) の使用 a4: " + str(a4) + ",a5: " + str(a5)) 20 21 a6 = [x for x in "abcd"] 22 print(" リスト内包表記の使用 a6: " + str(a6)) 23 24 a6.append('e') 25 del a6[1:3] # a6[1],a6[2] を削除 26 print(" 追加と削除 a6: " + str(a6)) 27 # array モジュール 28 print("array モジュール") 29 print(" タイプコード " + typecodes) 30 b1 = array("i", [1, 2, 3]) 31 print(" b1: " + str(b1)) 32 b1.append(4) 33 b1.remove(2) # 値が 2 である要素を削除 34 print(" 追加と削除 b1: " + str(b1)) 35 # numpy.ndarray モジュール 36 print("numpy.ndarray モジュール") 37 c1 = np.array([1, 2, 3]) 38 print(" c1: " + str(c1)) 39 c2 = np.array([1.5, 2, 3]) # np.array([1, 2, 3]], np.float) と同じ 40 print(" c2: " + str(c2))
リスト 空のリスト a1: [],a2: [] 角括弧とカンマの使用 a3: [1, 2, 3] list(iterable) の使用 a4: ['a', 'b', 'c', 'd'],a5: ['a', 'b', 'c', 'd'] リスト内包表記の使用 a6: ['a', 'b', 'c', 'd'] 追加と削除 a6: ['a', 'd', 'e'] array モジュール タイプコード bBuhHiIlLqQfd b1: array('i', [1, 2, 3]) 追加と削除 b1: array('i', [1, 3, 4]) numpy.ndarray モジュール c1: [1 2 3] c2: [ 1.5 2. 3. ]
01 #****************************/ 02 #* 2 次元配列 */ 03 #* coded by Y.Suganuma */ 04 #****************************/ 05 # -*- coding: UTF-8 -*- 06 from array import * 07 import numpy as np 08 # リスト 09 print ("リスト") 10 #a1 = [[], []] 11 #a1[0] = [1, 2, 3] 12 #a1[1] = [4, 5, 6] 13 a1 = [[1, 2, 3], [4, 5, 6]] # 上の 3 行でも可 14 a1[1][0] = 10; 15 a2 = a1[0] # 要素数 3 の 1 次元配列 16 a2[1] = 100 17 #a2[3] = 1000 # error(index out of range) 18 a3 = a1[1] # 要素数 3 の 1 次元配列 19 print(" 2 次元配列 a1: " + str(a1)) 20 print(" 1 次元配列 a2: " + str(a2) + ",a3: " + str(a3)) 21 # array モジュール 22 print("array モジュール") 23 #b1 = [array("i", []), array("i", [])] 24 #b1[0] = [1, 2, 3] 25 #b1[1] = [4, 5, 6] 26 b1 = [array("i", [1, 2, 3]), array("i", [4, 5, 6])] # 上の 3 行でも可 27 b1[1][0] = 10; 28 b2 = b1[0] # 要素数 3 の 1 次元配列 29 b2[1] = 100 30 #b2[3] = 1000 # error(index out of range) 31 b3 = b1[1] # 要素数 3 の 1 次元配列 32 print(" 2 次元配列 b1: " + str(b1)) 33 print(" 1 次元配列 b2: " + str(b2) + ",b3: " + str(b3)) 34 # numpy.ndarray モジュール 35 print("numpy.ndarray モジュール") 36 c1 = np.array([[1, 2, 3], [4, 5, 6]]) 37 c1[1][0] = 10; 38 c2 = c1[0] # 要素数 3 の 1 次元配列 39 c2[1] = 100 40 #c2[3] = 1000 # error(index out of range) 41 c3 = c1[1] # 要素数 3 の 1 次元配列 42 print("2 次元配列 c1: ") 43 print(str(c1)) 44 print("1 次元配列 c2: " + str(c2) + ", c3: " + str(c3))
リスト 2 次元配列 a1: [[1, 100, 3], [10, 5, 6]] 1 次元配列 a2: [1, 100, 3],a3: [10, 5, 6] array モジュール 2 次元配列 b1: [array('i', [1, 100, 3]), array('i', [10, 5, 6])] 1 次元配列 b2: array('i', [1, 100, 3]),b3: array('i', [10, 5, 6]) numpy.ndarray モジュール 2 次元配列 c1: [[ 1 100 3] [ 10 5 6]] 1 次元配列 c2: [ 1 100 3], c3: [10 5 6]
#****************************/ #* 連想配列 */ #* coded by Y.Suganuma */ #****************************/ # -*- coding: UTF-8 -*- # 生成 #x = {"aaa" : 10, "ddd" : 20, "ccc" : 30} x = dict(aaa = 10, ddd = 20, ccc = 30) print(x) # 参照 print(" キー ccc に対する値: " + str(x['ccc'])) # 追加 x['bbb'] = 1 print(" キー bbb に対する値 1 を追加: " + str(x)) # 削除 del x['aaa'] print(" キー aaa に対する値を削除: " + str(x))
{'ccc': 30, 'aaa': 10, 'ddd': 20} キー ccc に対する値: 30 キー bbb に対する値 1 を追加: {'bbb': 1, 'ccc': 30, 'aaa': 10, 'ddd': 20} キー aaa に対する値を削除: {'bbb': 1, 'ccc': 30, 'ddd': 20}
py -3 test.py [data] # [ ] 内はオプション
01 # -*- coding: UTF-8 -*- 02 def func(s1, s2 = 20, s3 = 30) : 03 """example of function""" 04 s = s1 + s2 + s3 05 s1 = 100 06 return s ---------------------------------- 07 # -*- coding: UTF-8 -*- 08 from function import func 09 import sys 10 print(func.__doc__) 11 p1 = 10 12 print("sum = ", func(p1)) # func(s1 = 10) or func(10) でも可 13 print("p1 = ", p1) 14 print("sum = ", func(p1, s2 = 50)) # func(10, 50) でも可 15 print(len(sys.argv), sys.argv[0]) 16 #print(len(sys.argv), sys.argv[0], sys.argv[1]) # オプションを付加した場合
py -3 test.py data
example of function sum = 60 p1 = 10 sum = 90 1 test.py #2 test.py data
a: 10 b: 3.13 c: (5+6j) x:[10, 2, 3] y:[ 1 10 3] a: 1 b: 1.5 c: (1+2j) x:[10, 2, 3] y:[ 1 10 3]
01 # -*- coding: UTF-8 -*- 02 import numpy as np 03 def func(a, b, c, x, y) : 04 a = 10 05 b = 3.13 06 c = complex(5, 6) 07 x[0] = a 08 y[1] = a 09 print("a: " + str(a) + " b: " + str(b) + " c: " + str(c) + " x:" + str(x) + " y:" + str(y)) ---------------------------------- 10 # -*- coding: UTF-8 -*- 11 import numpy as np 12 from function import func 13 a = 1 14 b = 1.5 15 c = complex(1, 2) 16 x = [1, 2, 3] 17 y = np.array([1, 2, 3]) 18 func(a, b, c, x, y) 19 print("a: " + str(a) + " b: " + str(b) + " c: " + str(c) + " x:" + str(x) + " y:" + str(y))
01 # -*- coding: UTF-8 -*- 02 def add(s1, s2) : 03 s = s1 + s2 04 return s 05 def sub(s1, s2) : 06 s = s1 - s2 07 return s 08 def add_sub(fun, s1, s2) : 09 s = fun(s1, s2) 10 return s ---------------------------------- 11 # -*- coding: UTF-8 -*- 12 from function import add, sub, add_sub 13 print(add(2, 3)) # 5 14 kasan = add 15 print(kasan(2, 3)) # 5 16 print(add_sub(add, 2, 3)) # 5 17 print(add_sub(sub, 2, 3)) # -1
01 # -*- coding: UTF-8 -*- 02 def func1() : 03 # print(str(a) + " in func1") エラー 04 a = 20 05 print(str(a) + " in func1") 06 07 def func2() : 08 global a # 記述しないとエラー 09 print(str(a) + " in func2") 10 a *= 10 11 print(str(a) + " in func2") 12 13 a = 10 14 print(a) 15 func1() 16 print(a) 17 func2() 18 print(a)
10 20 in func1 10 10 in func2 100 in func2 100
(式 for 式 in イテラブルオブジェクト) # for を多重に使用しても良い
01 # -*- coding: UTF-8 -*- 02 class Example : 03 """A simple example of class""" # クラスの説明 04 c_var = 12345 # クラス変数 05 def func(self, a) : 06 self.i_var = a # インスタンス変数 ---------------------------------- 07 # -*- coding: UTF-8 -*- 08 from function import Example 09 print(Example.__doc__) # クラスの説明の表示 10 x = Example() # Example クラスのインスタンス(オブジェクト)の生成 11 x.func(10) # Example.func(x, 10) と等価 12 y = Example() 13 y.func(20) 14 z = Example() 15 z.func(30) 16 print("最初の状態 x,y,z") 17 print(Example.c_var, x.c_var, x.i_var) 18 print(Example.c_var, y.c_var, y.i_var) 19 print(Example.c_var, z.c_var, z.i_var) 20 print("***w に x を代入***") 21 w = x 22 print("w の値変更 x,y,z,w") 23 w.c_var = 100 24 w.i_var = 40 25 print(Example.c_var, x.c_var, x.i_var) 26 print(Example.c_var, y.c_var, y.i_var) 27 print(Example.c_var, z.c_var, z.i_var) 28 print(Example.c_var, w.c_var, w.i_var) 29 print("x の値変更 x,y,z,w") 30 xf = x.func # 関数に対するポインタ,普通の関数でもOK 31 xf(50) 32 x.c_var = 1000 33 print(Example.c_var, x.c_var, x.i_var) 34 print(Example.c_var, y.c_var, y.i_var) 35 print(Example.c_var, z.c_var, z.i_var) 36 print(Example.c_var, w.c_var, w.i_var) 37 print("クラス変数値の変更 x,y,z") 38 Example.c_var = 123 39 print(Example.c_var, x.c_var, x.i_var) 40 print(Example.c_var, y.c_var, y.i_var) 41 print(Example.c_var, z.c_var, z.i_var) 42 print(Example.c_var, w.c_var, w.i_var)
A simple example of class 最初の状態 x,y,z 12345 12345 10 12345 12345 20 12345 12345 30 ***w に x を代入*** w の値変更 x,y,z,w 12345 100 40 12345 12345 20 12345 12345 30 12345 100 40 x の値変更 x,y,z,w 12345 1000 50 12345 12345 20 12345 12345 30 12345 1000 50 クラス変数値の変更 x,y,z 123 1000 50 123 123 20 123 123 30 123 1000 50
# -*- coding: UTF-8 -*- class Complex() : def __init__(self, re, im = 0.0) : self.re = re self.im = im def add(self, v) : x = Complex(self.re + v.re, self.im + v.im) return x ---------------------------------- # -*- coding: UTF-8 -*- from function import Complex x = Complex(1, 2) y = Complex(3) z = x.add(y) print((z.re, z.im)) # (4, 2.0)
class DerivedClassName ( BaseClassName1, BaseClassName2, ・・・ ):
BaseClassName.methodname ( self, arguments )
# -*- coding: UTF-8 -*- class Num : name = "数値" def __init__(self, v) : self.v = v def add(self, v) : x = Num(self.v + v) return x class Int(Num) : name = "整数" class Complex(Num) : name = "複素数" # 親クラスのコンストラクタを呼びたい場合は Num.__init__(self, 値) def __init__(self, re, im = 0.0) : self.re = re self.im = im def add(self, v) : x = Complex(self.re + v.re, self.im + v.im) return x ---------------------------------- # -*- coding: UTF-8 -*- from function import * x = Int(10) # 基底クラス Num のコンストラクタ __init__ の継承により,変数 v に値が設定される print(x.v) # 10 y = x.add(20) # 親クラス Num のメソッド add の継承 print(y.v) # 30 u = Complex(1, 2) # クラス Complex のコンストラクタ __init__ の利用 print((u.re, u.im)) # (1, 2) v = Complex(3) print((v.re, v.im)) # (3, 0.0) w = u.add(v) # クラス Complex のメソッド add の利用 print((w.re, w.im)) # (4, 2.0) u.re = (Num.add(Num(u.re), 10)).v # 基底クラスのメソッド add の利用 print((u.re, u.im)) # (11, 2) print(u.name) # クラス Complex のクラス変数 name の値(複素数) print(Num.name) # 基底クラス Num のクラス変数 name の値(数値)
01 # -*- coding: UTF-8 -*- 02 a = input("data? ") 03 b = a.split() 04 print(b) 05 x = int(b[0]) 06 y = float(b[1]) 07 z = b[2] 08 print(x, y, z) 09 print("x = " + str(x) + ", y = " + str(y) + ", z = " + str(z)) 10 #print("x = " + x + ", y = " + y + ", z = " + z) # error 11 form = "x = {0:2d}, y = {1:.2f}, z = {2:s}".format(x, y, z) 12 print(form)
x = ..., y = ..., z = ...
data? 10 3.141592654 abc ['10', '3.141592654', 'abc'] 10 3.141592654 abc x = 10, y = 3.141592654, z = abc x = 10, y = 3.14, z = abc
# -*- coding: UTF-8 -*- # 出力 f = open("test.txt", "w") # 出力のためにオープン f.write("10 3.1492654 abc\nテスト データ\n") f.close() # 全てのデータを入力 f = open("test.txt", "r") # 入力のためにオープン a = f.read() print(a) # "10 3.1492654 abc\nテスト データ\n" # ファイルの先頭に移動 f.seek(0) # 1 行ずつ入力 b = f.readline() print(b) # "10 3.1492654 abc\n" b = f.readline() print(b) # "テスト データ\n" b = f.readline() print(b) # "" f.close()
01 # -*- coding: UTF-8 -*- 02 03 #***************************/ 04 # 変数の有効範囲(スコープ) */ 05 # coded by Y.Suganuma */ 06 #***************************/ 07 08 #******************/ 09 # クラス Example1 */ 10 #******************/ 11 class Example1 : 12 c_var = 1000 13 14 def __init__(self) : 15 self.i_var = 2000 16 17 def sub1(self) : 18 print("sub1 c_var", self.c_var, "i_var", self.i_var) 19 20 #******************/ 21 # クラス Example2 */ 22 #******************/ 23 class Example2(Example1) : 24 def sub2(self) : 25 print("sub2 c_var", self.c_var, "i_var", self.i_var) 26 27 #***********/ 28 # 関数 sub */ 29 #***********/ 30 def sub() : # この位置で定義する必要がある 31 x = 40 32 print(" sub x", x) 33 print(" sub z", z) 34 35 #***************/ 36 # main program */ 37 #***************/ 38 # ブロック 39 x = 10 40 z = 30 41 if x > 5 : 42 print("block x", x) 43 x = 15 44 y = 20 45 print("block x", x) 46 print("block y", y) 47 else : 48 print("block x", x) 49 x = -15 50 print("block x", x) 51 sub() 52 print("x", x) 53 print("y", y) # 最初の x が 1 の時は,y が未定義のためエラー 54 # クラス 55 ex = Example2() 56 ex.sub1() 57 ex.sub2() 58 print("member( c_var )", Example2.c_var) 59 print("member( i_var )", ex.i_var)
global x
block x 10 block x 15 block y 20 sub x 40 sub z 30 x 15 y 20
sub1 c_var 1000 i_var 2000 sub2 c_var 1000 i_var 2000 member( c_var ) 1000 member( i_var ) 2000
情報学部 | 菅沼ホーム | Python と C/C++ 目次 |