Python学習ノート『Pythonコアプログラミング』第8章条件とループ

7199 ワード

if文
3つのセクションで構成されています.キーワード自体、結果の真偽を判断するための条件式、および式が真または非ゼロの場合に実行されるコードブロックです.
      if  expression:
         expr_true_suite
ブールオペレータand or notを使用することで多重判定条件を実現できます
     if  not warn and (system_load >= 10):
         print "WARNING:losing resources"
         warn +=1
複合文のコードブロックに1行のコードしか含まれていない場合は、1行に書くことができます.
    if make_hard_copy:send_data_to_printer()
else文
    if expression:
       expr_true_suite
    else:
      expr_true_suite 
if passwd == user.passwd:

    ret_str = "password accepted"

    id = user.id

    valid = True

else:

    ret_str = "invalid password entered....try again!"

    valid = False

elif(すなわちelse-if)文------pythonはswitch/case文をしばらくサポートしていません.
 if expression1:
    expr1_true_suite
elif expression2:
    expr2_true_suite
elif expressionN:
    exprN_true_suite
else:
    none_of_the_abave_suite
条件式(トリプルオペレータ)じょうけんしき
    X if C else Y
while文
    while expression:
         suite_to_repeat
for文:
    for iter_var in iterable:#毎回ループ、iter_var反復変数は、反復可能なオブジェクトの現在の要素として設定され、文に使用されます.
         suite_to_repeat
pass文:
     def foo_func():
pass#は、他のコードに干渉することなく、構造を先に決定するために使用できます.
range()完全構文
range(start,end,step=1)#は、start<=krange()簡略構文
range(end)#startデフォルトは0、stepデフォルトは1
    range(start,end)
シーケンスに関連する組み込み関数:
sorted()reversed()#はシーケンス(リスト)を返します.
Enumerate()zip()は、反復器zip()を返して2つのリストを圧縮します...?
break文、現在のループを終了して次の文にジャンプします.
continue文:現在のループを終了し、残りの文を無視してループの先頭に戻り、次のループを開始します.
注意:whileおよびforループではelse文が使用されます.ループで使用する場合、else句はループが完了した後にのみ実行され、break文はelseブロックをスキップします.
反復器とiter()関数
反復器の動作原理:
>>> myTuple

(123, 'zav', 45.33)

>>> i = iter(myTuple)

>>> i.next()

123

>>> i.next()

'zav'

>>> i.next()

45.33

>>> i.next()



Traceback (most recent call last):

  File "<pyshell#39>", line 1, in <module>

    i.next()

StopIteration

 
辞書の反復器またはその遍歴キー.for eachKey in myDict.keys()はfor eachKey in myDictと略記できます
legends = {('poe','wei'):('123','3444','34244'),('jasdlf','adsfasd'):(123,3434,343434)}

for eachLegend in legends:

    print 'Name: %s\tOccupation: %s' % eachLegend

    print '    birth: %s\tDeath:%s\tALBUM:%s
' % legends[eachLegend]

ファイル:ファイルオブジェクトによって生成された反復器はreadline()メソッドを自動的に呼び出し、テキストファイルのすべてのローにアクセスできます.for eachLine in myFileを使用してテキストファイルを反復できます
   myFile = open('config-win.txt')



       for eachLine in myFile:



            print eachLine,  

リスト解析:[expr for iter_var in iterable]
コアはforループで、iterableオブジェクトのすべてのエントリを反復します.前のexprはシーケンスの各メンバーに適用され、最後の結果値は式によって生成されたリストです.     
[x ** 2 for x in range(10)]           #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]        []

拡張構文:[expr for iter_var in iterable if cond_expr]
 
 
この構文は反復時に条件式cond_を満たすフィルタまたは取得します.exprのシーケンスメンバー
seq = [11,12,13,1,4,34,45,56,6,67,78,3]

 [x for x in seq if x%2]   #[11, 13, 1, 45, 67, 3]

ジェネレータ:特定の関数で、値を返すことができます.その後、コードのセンシングを一時停止し、後で復元します.
ジェネレータ表現(expr for iter_var in iterable if cond_expr):ジェネレータはメモリでより使いやすい構造です.
階乗関数:
def factorial(n):

    if n>1:

        return n*factorial(n-1)

    else:

        return 1

factorial(10)            #  3628800