情報学部 | 菅沼ホーム | 目次 | 索引 |
>>> "文字列" '文字列' >>> '文字列' '文字列' >>> b"abc" b'abc' >>> b"文字列" # エラー( ASCII 文字だけ可能)
>>> print("a\nbc") a bc >>> print("a\\nbc") a\nbc >>> print(r"a\nbc") a\nbc
>>> 2 * "abc" + "efg" + "hij" 'abcabcefghij' >>> 2 * "abc" "efg" "hij" 'abcefghijabcefghij'
>>> """ ... abc ... def ... ghi ... """ '\nabc\ndef\nghi\n'
>>> """\ ... abc\ ... def ... ghi\ ... """ 'abcdef\nghi'
Seq. | 説明 |
---|---|
\newline | 行末に \ を記述するとその行の改行が無視される |
\\ | バックスラッシュ(円記号) |
\' | 一重引用符(シングル クォーテーション) |
\" | 二重引用符(ダブル クォーテーション) |
\a | ベル |
\b | バック スペース |
\f | 改ページ |
\n | 行送り |
\r | 復帰 |
\t | 水平タブ |
\v | 垂直タブ |
\ooo | 8進表記による ASCII 文字 |
\xhh | 16進表記による ASCII 文字 |
\N{name} | Unicode データベース中で name という名前の文字 |
---|---|
\uxxxx | 16-bit の十六進値 xxxx を持つ文字 |
\Uxxxxxxxx 32-bit の十六進値 xxxxxxxx を持つ文字 |
>>> 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
int x = 10;
int x = 10; x = 20; x = 1.3; x = "abc";
>>> a = 10 >>> c = complex(1, 2) >>> a = "abc"
False | class | finally | is | return |
None | continue | for | lambda | try |
True | def | from | nonlocal | while |
and | del | global | not | with |
as | elif | if | or | yield |
assert | else | import | pass | |
break | except | in | raise |
>>> x, y = 10, 3 * 4 >>> print(x, y) 10 12
# 整数の場合,文字列の場合も同じ 01 >>> a = 10 02 >>> b = 10 03 >>> a == b, a is b 04 (True, True) 05 >>> b = a 06 >>> a == b, a is b 07 (True, True) 08 >>> b = 20 09 >>> a == b, a is b 10 (False, False) 11 >>> a, b 12 (10, 20) # 浮動小数点数の場合,虚数(複素数)の場合も同じ 13 >>> c = 1.2 14 >>> d = 1.2 15 >>> c == d, c is d 16 (True, False) 17 >>> d = c 18 >>> c == d, c is d 19 (True, True) 20 >>> d = 1.3 21 >>> c == d, c is d 22 (False, False) 23 >>> c, d 24 (1.2, 1.3)
>>> a, b, c = 10, 20, 30 >>> a, b, c (10, 20, 30) >>> del a, b >>> a, b, c Traceback (most recent call last): File "%lt;stdin>", line 1, in <module> NameError: name 'a' is not defined
>>> 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 >>> def func(x) : pass ... >>> func(a) >>> if a == 10: ... pass ... else: ... print("test") ... >>>
>>> a = 10 >>> a += 5 # a = a + 5 と同じ >>> a 15 >>> a / 2 7.5 >>> a // 2 7
01 #include <stdio.h> 02 03 int main() 04 { 05 // データの入力 06 double x, y; 07 printf("2つのデータを入力して下さい "); 08 scanf("%lf %lf", &x, &y); 09 // 乗算と除算 10 double mul = x * y; 11 double div = x / y; 12 // 結果の出力 13 printf("乗算=%f 除算=%f\n", mul, div); 14 15 return 0; 16 }
01 # -*- coding: UTF-8 -*- 02 ############################ 03 # 2つのデータの乗算と除算 # 04 # coded by Y.Suganuma # 05 ############################ 06 # データの入力 07 str = input("2つのデータを入力して下さい ") 08 a = str.split() 09 x = int(a[0]) 10 y = int(a[1]) 11 # 和と差の計算 12 mul = x * y 13 div = x / y 14 # 結果の出力 15 print("乗算=", mul, "除算=", div)
""" 2つのデータの乗算と除算 # coded by Y.Suganuma # """
2つのデータを入力して下さい 8 3
乗算= 24 除算= 2.6666666666666665
#****************************/ #* 複素数の計算 */ #* coded by Y.Suganuma */ #****************************/ # -*- coding: UTF-8 -*- x1 = complex(1.0, 2.0) x2 = complex(3.0) x3 = complex(0, 2) print ("x1:" + str(x1) + ",x2:" + str(x2) + ",x3:" + str(x3)) print("x1 + x2 = " + str(x1 + x2)) print("x1 - x2 = " + str(x1 - x2)) print("x1 * x2 = " + str(x1 * x2)) print("abs(x1) = " + str(abs(x1))) print("x1 の共役複素数 = " + str(x1.conjugate()))
x1:(1+2j),x2:(3+0j),x3:2j x1 + x2 = (4+2j) x1 - x2 = (-2+2j) x1 * x2 = (3+6j) abs(x1) = 2.23606797749979 x1 の共役複素数 = (1-2j)
< : より小さい 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)
>>> (3 < 2) and (2 < 5) False >>> 3 < 2 < 5 False >>> 3 < 4 < 5 True
<< : 左にビットシフト a << 3 >> : 右にビットシフト a >> 3 & : ビットごとの論理積 x & y | : ビットごとの論理和 x | y ^ : ビットごとの排他的論理和 x ^ y ~ : 1 の補数( 0 と 1 の逆転) ~x
if 式1 : 文1 [elif 式2 : 文2] ・・・・・ [elif 式n : 文n] [else : 文]
# -*- coding: UTF-8 -*- a = int(input("データを入力してください ")) # 標準入力から 1 行入力 if a < 0 : print("負") elif a == 0 : print("0") else : print("正")
while 式 : 文1 [else : 文2]
# -*- coding: UTF-8 -*- a = -1 b = 0 while a <= 0 : a = int(input("data? ")) if a == 0 : break else : b = 1 / a print(b)
# -*- coding: UTF-8 -*- sw = 0 x = 0 while x != 99999 : x = int(input("データを入力してください ")) if x < 0 and (sw == 0 or x > max) : max = x sw = 1 print(" 最大値 = " + str(max))
for 変数 in イテラブルオブジェクト : 文1 [else : 文2]
>>> for x in [1, 2, 3] : # list ... print(x) ... 1 2 3 >>> for x in (1, 2, 3) : # tuple ... print(x) ... 1 2 3 >>> for x in range(1, 4) : # range ... print(x) ... 1 2 3
>>> with open("test.txt", "r") as f : ... a = f.read() ... >>> a '10 20 30\n菅沼義昇\n' >>> f.closed True # 既にクローズされている
# -*- coding: UTF-8 -*- while True : try : x = int(input("整数を入力して下さい: ")) break except ValueError : print(" 不適切なデータです!") print(x)
int x[10]; // 要素の数 10 の部分は定数である必要がある
x[5] = 3.0; y = x[3];
int x[4] = {100, 200, 300, 400}; int *y; // int y[4]; と宣言した場合は,y = x; は実行できない
y = x; または y = &(x[0]);
int x[3][2] = {{100, 200}, {300, 400}, {500, 600}};
int *z = (int *)x; // z = &x[0][0]; でも良い
int *x = new int [n]; // 要素の数 n は変数でも構わない
double** pd = new double* [2]; for (i1 = 0; i1 < 2; i1++) pd[i1] = new double [3];
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 #* 平均点以下の人数 */ 03 #* coded by Y.Suganuma */ 04 #****************************/ 05 # -*- coding: UTF-8 -*- 06 # データの入力 07 x = list() 08 n = int(input("人数は? ")) 09 for i1 in range(n) : 10 x.append(int(input(str(i1+1) + " 番目の人に点数は? "))) 11 """ 12 # 入力を終了したいときは,改行だけを入力 13 n = 0 14 a = input("1 番目の人に点数は? ") 15 while len(a) > 0 : 16 x.append(int(a)) 17 n += 1 18 a = input(str(n+1) + " 番目の人に点数は? ") 19 # 半角スペースで区切って 1 行で入力 20 a = input(" 各人に点数は? ").split() 21 n = len(a) 22 for i1 in range(n) : 23 x.append(int(a[i1])) 24 """ 25 # 平均点の計算 26 mean = 0.0 27 for i1 in range(n) : 28 mean += x[i1] 29 mean /= n 30 # 平均点以下の人数をカウント 31 ct = 0 32 for i1 in range(n) : 33 if x[i1] <= mean : 34 ct += 1 35 # 結果の出力 36 print("結果: " + str(ct) + " 人")
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]
10 20 30\n 40 50\n \n
01 #****************************/ 02 #* 平均点以下の人数 */ 03 #* coded by Y.Suganuma */ 04 #****************************/ 05 # -*- coding: UTF-8 -*- 06 # データの入力 07 x = list() # 各人の点数 08 n = 0 # クラスの数 09 m = list() # 各クラスの人数 10 mm = 0; # 全体の人数 11 mean = 0; # 全体の平均 12 13 a = input("1 番目のクラスにおける各人の点数は?(半角スペースで区切る) ").split() 14 while len(a) > 0 : 15 m.append(len(a)) # クラスの人数 16 x.append(list()) # 2 次元配列の生成 17 mm += m[n] # 全体の人数 18 for i1 in range(m[n]) : 19 x[n].append(int(a[i1])) 20 mean += x[n][i1] # 全体の平均 21 n += 1 22 a = input(str(n+1) + " 番目のクラスにおける各人の点数は? ").split() 23 # 平均点の計算 24 mean /= mm 25 # 平均点以下の人数のカウントと出力 26 for i1 in range(n) : 27 ct = 0 28 for i2 in range(m[i1]) : 29 if x[i1][i2] <= mean : 30 ct += 1 31 print("クラス" + str(i1+1) + " における平均点以下の人数: " + str(ct) + " 人")
#****************************/ #* 連想配列 */ #* 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}
01 # -*- coding: UTF-8 -*- 02 x = [1, 2, 3] 03 y = [1, 2, 3] 04 # x, y = [1, 2, 3], [1, 2, 3] 05 y[0] = 10 06 print(x, y) # [1, 2, 3] [10, 2, 3]
01 # -*- coding: UTF-8 -*- 02 x = [1, 2, 3] 03 y = x 04 # x = y = [1, 2, 3] 05 y[0] = 10 06 print(x, y) # [10, 2, 3] [10, 2, 3]
01 # -*- coding: UTF-8 -*- 02 # import copy 03 x = [1, 2, 3] 04 y = x.copy() # y = x[:] と同じ 05 # y = copy.copy(x) 06 y[0] = 10 07 print(x, y) # [1, 2, 3] [10, 2, 3]
01 # -*- coding: UTF-8 -*- 02 x = [[1, 2, 3], [4, 5, 6]] 03 y = x.copy() 04 y[0][0] = 10 05 print(x,y) # [[10, 2, 3], [4, 5, 6]] [[10, 2, 3], [4, 5, 6]]
Example(n)
01 # -*- coding: UTF-8 -*- 02 import copy 03 04 class Example : 05 def __init__(self, x) : 06 self.x = x 07 08 x = [Example(1), Example(2), Example(3)] 09 y = copy.copy(x) 10 y[1] = Example(4) 11 y[2].x = 5 12 print(x[0].x, x[1].x, x[2].x) # 1 2 5 13 print(y[0].x, y[1].x, y[2].x) # 1 4 5
01 # -*- coding: UTF-8 -*- 02 import copy 03 04 class Example : 05 def __init__(self, x) : 06 self.x = x 07 08 x = [[1, 2, 3], [4, 5, 6]] 09 y = copy.deepcopy(x) 10 y[0][0] = 10 11 print(x, y) # [[1, 2, 3], [4, 5, 6]] [[10, 2, 3], [4, 5, 6]] 12 13 x = [Example(1), Example(2), Example(3)] 14 y = copy.deepcopy(x) 15 y[1] = Example(4) 16 y[2].x = 5 17 print(x[0].x, x[1].x, x[2].x) # 1 2 3 18 print(y[0].x, y[1].x, y[2].x) # 1 4 5
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
[1] [1, 2] [1, 2, 3]
# -*- coding: UTF-8 -*- def func(a, lt = []) : lt.append(a) return lt ---------------------------------- # -*- coding: UTF-8 -*- from function import func print(func(1)) print(func(2)) print(func(3))
# -*- coding: UTF-8 -*- def func(a, sum = 0) : sum += a return sum ---------------------------------- # -*- coding: UTF-8 -*- from function import func print(func(1)) print(func(2)) print(func(3))
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
# -*- coding: UTF-8 -*- def func(*var, p) : print(var, p) # (10, 20) 30 を出力 ---------------------------------- # -*- coding: UTF-8 -*- from function import func func(10, 20, p = 30) # func(10, 20, 30) はエラー
# -*- coding: UTF-8 -*- def func(**key) : print(key) # {'key1': 10, 'key2': 20} を出力 ---------------------------------- # -*- coding: UTF-8 -*- from function import func func(key1 = 10, key2 = 20)
# -*- coding: UTF-8 -*- def func(p1, p2, *var, **key) : print(p1, p2) # 1 5 を出力 print(var) # (100, 200) を出力 print(key) # {'key1': -1, 'key2': -2} を出力 ---------------------------------- # -*- coding: UTF-8 -*- from function import func func(1, 5, 100, 200, key1 = -1, key2 = -2)
def func(p1, key, var, p2 = 5) : print(p1, p2) # 1 5 を出力 print(var) # (100, 200) を出力 print(key) # {'key1': -1, 'key2': -2} を出力 ---------------------------------- # -*- coding: UTF-8 -*- from function import func var_m = (100, 200) # タプル型 key_m = {'key1': -1, 'key2': -2} # 辞書型 func(1, key_m, var_m) # 4 つ目の引数は省略
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 を多重に使用しても良い
>>> g = (pow(x, 2) for x in range(10)) >>> list(g) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> next(g) 0 >>> next(g) 1 >>> next(g) 4 ・・・・・ >>> list(g) # 要素を取り出した後は空 [] >>> sum(pow(x, 2) for x in range(10)) # 2 乗の和 285
>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> sum(x1 * y1 for x1, y1 in zip(x, y)) 32
>>> page = ["aaa bbb ccc aaa", "aaa bbb ccc", "bbb aaa aaa"] >>> unique_words = set(word for line in page for word in line.split()) >>> unique_words {'aaa', 'ccc', 'bbb'}
>>> def reverse(data, start) : ... for index in range(start, -1, -1) : ... yield data[index] ... >>> data1 = "abcde" >>> n = reverse(data1, 2) >>> next(n) 'c' >>> next(n) 'b' >>> for char in reverse(data1, 2) : ... print(char) ... c b a
01 # -*- coding: UTF-8 -*- 02 class Example : 03 """A simple example of class""" # クラスの説明 04 c_var = 12345 # クラス変数 05 def func(self, a) : # def __init__(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,w") 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
x = Example(10)
# -*- 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 class Num : 03 name = "数値" 04 def __init__(self, v) : 05 self.v = v 06 def add(self, v) : 07 x = Num(self.v + v) 08 return x 09 # クラスメソッド 10 @classmethod 11 def class_method(cls) : 12 print(cls.name) 13 # スタティックメソッド 14 @staticmethod 15 def static_method() : 16 print(Num.name) 17 class Int(Num) : 18 name = "整数" 19 class Complex(Num) : 20 name = "複素数" 21 def __init__(self, re, im = 0.0) : 22 self.re = re 23 self.im = im 24 def add(self, v) : 25 x = Complex(self.re + v.re, self.im + v.im) 26 return x ---------------------------------- 27 # -*- coding: UTF-8 -*- 28 from function import * 29 x = Complex(1, 2) 30 Complex.class_method() 31 x.class_method() 32 Complex.static_method() 33 x.static_method()
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 -*- import sys for line in sys.stdin : if line == "end\n" or len(line.strip()) <= 0 : break else : print(" " + line) # 以下の文とほぼ同じ line = sys.stdin.readline() while line != "end\n" and len(line.strip()) > 0 : print(" " + line) line = sys.stdin.readline()
# -*- 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()
# -*- coding: UTF-8 -*- with open('test.txt') as fp: for line in iter(fp.readline, ''): print(line, end="")
# -*- coding: UTF-8 -*- import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) # 2 行 3 列 np.savetxt('test.txt', a) # 配列 a の出力 b = np.loadtxt('test.txt') # 配列 b への入力 print(b)
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
情報学部 | 菅沼ホーム | 目次 | 索引 |