| 情報学部 | 菅沼ホーム | 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++ 目次 |