• Pythonの基本
⑨制御構文

条件文(if、else、elsif)はこんな感じ。
【文法】
if expr:
    ...
[elif expr:
    ...]
[else:
    ...]
point = 78;
if point < 25:

    print( "red" );
elif point < 50:
    print( "yello" );
else:
    print( "green" );
=>
green

whileループ(while、else)はこんな感じ。
【文法】
while expr:
    ...
[else:
    ...]
n = 0
while n < 10:
    print( n );
    n += 1;
else:
    print("exit");

=>
0
1
2
3
4
5
6
7
8
9
exit
forループ(for、in)はこんな感じ。
【文法】
for var in expr:
    ...
[else:
    ...]
for idx in [ 1, 2, 3 ]:
    print( idx ); => 1, 2, 3

for idx in (1, 2, 3):
    print( idx ); => 1, 2, 3

for key in { 'one': 1, 'two': 2, 'three': 3 }:
    print( key ); => one, two, three

for ch in "123":
    print( ch ); => 1, 2, 3

for line in open( "a.txt" ):
    print( line ); => ファイル内容が1行ずつ表示される

for idx in range( 10 ):
   print( idx ); => 1, 2, 3. 4. 5.6 .7 .8 .9

for ch in u"あいうえお":
    print( ch ); =>あ,い,う,えお

for idx in [ 1, 2, 3 ]:
    print( idx );
else:
    print( 'END' ); => 1, 2, 3, END
ループを抜ける(break)はこんな感じ。
for idx in range( 10 ):
    if idx == 5:
        break;
    print( idx ); => 0, 1, 2, 3, 4 5でループを抜ける。
ループを繰り返す(continue)はこんな感じ。
for idx in range( 10 ):
    if idx == 5:
        continue
    print( idx ); => 0, 1, 2, 3, 4, 6, 7, 8, 9 5はスキップされる。
例外処理(try、except、else、finally、raise)はこんな感じ。
【文法】
try:

    ...
[except [expr]:
    ...]
[else:
    ...]
[finally:
    ...]
str = 'ABC';
try:
    ch = str[ 5 ]; # 5番目の文字が無い。IndexError例外発生。
except IOError:
    print( 'IOError exception' );
except IndexError:
    print( 'IndexError exception' );
except:
    print( 'Unknown exception' );
else:
    print( 'no exception' );
finally:
    print( 'Finally' ) # 常にこの行は実行される。
=>
IndexError exception
Finally

raiseは例外を発生させる。
str = 'ABC';
try:
    ch = str[ 5 ];
except IndexError:
    print( "IndexError except" );
    raise
except:
    print( "unknown except" );
finally:
    print( "finarry" );
=>
IndexError except
finarry
Traceback (most recent call last):
  File "C:\Users\(ログインユーザ名)\AppData\Local\Programs\Python\Python37-32\test.py", line 3, in <module>
    ch = str[ 5 ];
IndexError: string index out of range

try:
    raise SystemError( 'SystemError Dummy occured.' )
except SystemError as err:
    print("SystemError");
    print( err );
=>
SystemError
SystemError Dummy occured.

class UserException( Exception ):
    def __init__( self, file, linenum ):
        self.file = file
        self.linenum = linenum

try:
    raise UserException( "a.txt", 12345 )
except UserException as err:
    print( "UserException" );
    print( err.file );
    print( err.linenum );
=>
UserException
a.txt
12345


with文(with)はこんな感じ。
with expr [ as target ] [ , expression [ as target ] ]... :
    ...
withブロックが終了時にオブジェクト終了処理(例えばファイルクローズ)が自動で呼ばれます。
# withなし
file = open( "a.txt" );
print( file.read() );
file.close(); ファイルクローズが要る

# withあり①
with open( "a.txt" ) as file:
    print( file.read() ); ファイルクローズが要らない

# withあり②

file = open( "a.txt" );
with file:
    print( file.read() ); ファイルクローズが要らない
アサーション文(assert)はこんな感じ。

assert はデバッグ時に値のチェックをするための仕組み。__debug__ が True の時のみ動作し、デバッグ対象の評価式がFalseであれば、AssertionError例外が発生。python を -O オプション付きで起動することで、__debug__ の値は False になる。
print( __debug__ ); => True

num = 1;
assert num == 2;
=>
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    assert num == 2;
AssertionError
assert exprは以下と等価
if __debug__:
    if not expr: raise AssertionError
例えばこんな感じ。
num = 1;
if __debug__:
    if not num == 5: raise AssertionError
=>
Traceback (most recent call last):
  File "<pyshell#20>", line 2, in <module>
    if not num == 5: raise AssertionError
AssertionError

パス文(pass)はこんな感じ。
何もしない文。空の関数、クラスなどを作るときに書く。
def UserFunction():
    pass

class UserClass:
    pass
デリート文(del)はこんな感じ。
オブジェクトを削除する。
x = 12345;
y = [ 9, 8, 7 ]
z = UserClass()
del x, y, z
print文(print)はこんな感じ。

変数やオブジェクトを標準出力に表示する。
print( 3 ); => 3
print( [ 1, 2, 3 ] ); => [1, 2, 3]
print( ( 1, 2, 3 ) ); => (1, 2, 3)
print( { 'key1':10, 'key2':20 } ); => {'key1': 10, 'key2': 20}
print( "AAA", "BBB" ); => AAA BBB 引数をカンマで区切るとスペース空けて表示される。
print( "改行なし", end="" );
print( ”改行あり" );
=> 改行なし改行あり end=""を指定すると改行なしになる。
print( "%s" % "書式指定" ); => 書式指定 1つ前の記事で、書式指定は色々やったので今回は割愛。
リダイレクトするのにPython2で使えた>>は使えない。こうなる。
with open( "a.txt", "w" ) as f:
    print( "ファイルに出力", file=f );

=> 何も表示されないがa.txtに”ファイルに出力”という文字が書かれる。
print文で複数の値を出力すると半角スペースで区切られる。半角スペースを入れたくない場合、sys.stdout.write() を使用する。
import sys
sys.stdout.write("Hello")
sys.stdout.write("World")
=> HelloWorld
exec文(exec)はこんな感じ。
引数の文字列をPythonのスクリプトとして実行する。
exec statements [ as global [ , local ] ]
exec( "print( 'hello' )" );
=> hello
exec( "print( global_param, local_param )", { "global_param": 100 },{ "local_param": 200 } )
=> 100 200






IMG_20190312_120047



スポンサードリンク