Python 入門

print("abc") # コメント文
abc
c = 'ABC'
i = 100
print(c,i)
ABC 100
i, i**2, i**0.5, i/2
(100, 10000, 10.0, 50.0)
(i+0.6)//2 # 切り捨て割算
50.0
i%2 # 余り
0

リスト(List)

a = ['A', 'B', '100', 100] # リスト
a
['A', 'B', '100', 100]
a[0:2] # 切り取り
['A', 'B']
b = [a, 'b']
b
[['A', 'B', '100', 100], 'b']
b = ['a', 'b']
b
['a', 'b']
a+b # 結合
['A', 'B', '100', 100, 'a', 'b']
c = ['Y', 'Z', '-100', -100] # リスト
c.extend(b)# cに追加結合
c
['Y', 'Z', '-100', -100, 'a', 'b']

if 文

x = 1
x==101
False
if x==100:
    print('if')
elif x==10:
    print('elif')
else:
    print('else')
else

for 文

for i in range(4):
    print(i)
0
1
2
3
x = [5,6,7]
for i in x:
    print(i)
    print(i*2)
5
10
6
12
7
14
for i in x:
    print(i)
    continue # 繰り返し処理は続ける
    print(i*2)
5
6
7
for i in x:
    print(i)
    break # 繰り返し処理を終える
    print(i*2)
5

関数

関数の定義
def mean(a,b):
    x = (a+b)/2
    return x
関数による計算
mean(1,2)
1.5
別の関数の定義
def cal(a,b):
    x = a+b
    y = a-b
    return x,y
関数による計算
cal(10,5)
(15, 5)
方形導波管の$m,n$次モードの遮断波数を計算する関数
pi = 3.141592653589793
def kc_mn_rw(m,n, a,b):
    kc = ((m*pi/a)**2+(n*pi/b)**2)**0.5
    return kc
X-bandの標準導波管の寸法に対する計算例
a, b = 22.90, 10.20 # X-band(8.2-12.5GHz)WRJ-10:JIS規格(EIAJ規格とは若干異なる
kc11 = kc_mn_rw(1,0,a,b)
kc11
0.13718745212182504

辞書

dict = {"TE10":kc11}
dict
{'TE10': 0.13718745212182504}
kc01 = kc_mn_rw(0,1, a,b)
dict["TE01"] = kc01
dict
{'TE10': 0.13718745212182504, 'TE01': 0.3079992797637052}
dict["TE11"] = kc_mn_rw(1,1, a,b)
dict
{'TE10': 0.13718745212182504,
 'TE01': 0.3079992797637052,
 'TE11': 0.3371705108022337}
dict["TM11"] = dict["TE11"]
dict
{'TE10': 0.13718745212182504,
 'TE01': 0.3079992797637052,
 'TE11': 0.3371705108022337,
 'TM11': 0.3371705108022337}
dict["TM11"]
0.3371705108022337
dict.keys()
dict_keys(['TE10', 'TE01', 'TE11', 'TM11'])
dict.values()
dict_values([0.13718745212182504, 0.3079992797637052, 0.3371705108022337, 0.3371705108022337])
dict.items()
dict_items([('TE10', 0.13718745212182504), ('TE01', 0.3079992797637052), ('TE11', 0.3371705108022337), ('TM11', 0.3371705108022337)])
for key,value in dict.items():
    print(key,value)
TE10 0.13718745212182504
TE01 0.3079992797637052
TE11 0.3371705108022337
TM11 0.3371705108022337

フォーマット

d = 20000
print(f'd={d}')
print(f'd={d:,}')
print(f'd={d:.1f}')
d=20000
d=20,000
d=20000.0
d2 = 'ABC'
print(f'{d2:5s}')
print(f'{d2:>5s}')
ABC  
  ABC

モジュールの利用方法

モジュールのインポートは,例えば,Numpyの場合,
import numpy as np
配列の計算をすると,
x = np.array([1,2,3])
y = np.array([-4,-5,-6])
x,y,x+y
(array([1, 2, 3]), array([-4, -5, -6]), array([-3, -3, -3]))

ファイルの入出力

ファイルのテキストの読み込みは,
with open('a.txt') as f:
    tt = f.read()
    print(tt)
12
abc
3456
defgh
with open('a.txt') as f:
    tt = f.readlines()
    print(tt)
['12\n', 'abc\n', '3456\n', 'defgh']
with open('a.txt') as f:
    for i in range(6):
        tt = f.readline()
        if tt=='':
            print('--- end ---')
            break
        else:
            print(tt.rstrip('\r\n'))
12
abc
3456
defgh
--- end ---
ファイルへのテキストの書き出しは,
with open('b.txt', 'w') as f:
    f.write('aaa\n---\n++++\n')
既存のファイルへの書き足しは,
with open('b.txt', 'a') as f:
    f.write('bbb\n===\n')
また,
cc = ['A', 'BB', 'CC', 'C']
with open('c.txt', 'w') as f:
    f.writelines(cc)
cc = ['A', 'BB', 'CC', 'DDD']
ccc = '\n'.join(cc)
print(ccc)
with open('c.txt', 'w') as f:
    f.writelines(ccc)
A
BB
CC
DDD
f = open('a.txt')
print(next(f))
print(next(f))
print(next(f))
12

abc

3456

f = open('a.txt')
for s in f:
    print(s)
12

abc

3456

defgh

リスト内包表記

まず,forループでは,
x = []
for i in range(5):
    x.append(i)
x
[0, 1, 2, 3, 4]
[i+2 for i in range(5)] # リスト内包表記
[2, 3, 4, 5, 6]
[i**3 for i in range(11)] # リスト内包表記
[0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
f_min, f_max, nf = 8.0, 12.0, 6
[f_min+(f_max-f_min)*(i/(nf-1))**3 for i in range(nf)] # リスト内包表記
[8.0, 8.032, 8.256, 8.864, 10.048, 12.0]
[i for i in range(5) if i%2==0] # 条件付
[0, 2, 4]

リストの参照

a = [1,2,3,4]
b = a
b.append(10)
a,b
([1, 2, 3, 4, 10], [1, 2, 3, 4, 10])
関数
def func(e,f):
    e.append(f)
    return e
による計算の場合も,
c = func(a,100)
a,c
([1, 2, 3, 4, 10, 100], [1, 2, 3, 4, 10, 100])