pythonプロセス制御(一)条件文、ループ文

27338 ワード

一、条件文
1.1簡単な概念
  • pythonは、if...else...およびif...elif...else...の2つの形態によって、単純または複雑な決定を実現する.このうちelse部分はオプションであり、elseがなければ条件を満たさない場合は何も実行しない.マルチif条件文では,1つの条件が真であれば判断を実行して終了する.
  • if     1:
    	   1
    else     2:
    	   2
    
    if     1:
    	   1
    else     2:
    	   2
    elif     3:
    	   3
    

    python 3でifの後の判断文にはカッコを付ける必要があります.2.if条件は、コードが返すブール論理結果TrueまたはFalseに基づいて動作するか否かを判断する.例えば、ブール動作:and、or、not、比較動作:==、!=、>、=、<=、メンバー動作:in、not in、アイデンティティ動作:is、is notである.3.pythonのpep符号化仕様に従って、pythonは4つのスペースでコード間のつながりを示します.たとえば、次のようにします.
    if Ture:
    		pass
    

    1.2例
  • 単条件判断
  • #coding:UTF-8
    score=int(input("       :"))
    if score<60:
        print "  "
    elif 60<=score<80:
        print "  "
    else:
        print "  "
    
  • 多条件判定は、andまたはorを使用して論理式を接続する.
  • ネスト条件判定で最も注意すべき問題はインデントの問題であり、if文ごとの次の行であり、そのレイヤ判定内に属する文であり、4つのスペースのインデント(前のレイヤ判定に対する位置)を行うべきである.
  • 三元オペレータは条件式とも呼ばれ、フォーマットはA=Y if X else Zで、
  • に相当する.
    if X:
    	A=Y
    else:
    	A=Z
    

    例:
    #coding:UTF-8
    def ifNull(string):
        return "notNull" if len(string) > 0 else "null"
    
    print ifNull("")
    print ifNull("tyson")
    

    二、循環文
    2.1条件サイクル:while
  • while条件は、論理演算結果に基づいて今回のループを実行すべきか否かを判断する.
  • 判断文で使用できる論理演算子は、ブール操作:and、or、not、比較操作:==、!=、>、=、<=、メンバー操作:in、not in、アイデンティティ操作:is、is notである.
  • は、循環体の前に相関変数を初期化して付与することが多い.また、循環体内には、関連変数の繰返し付与値、例えばi+=1が含まれることが多い.ケース:0から10までの数値加算結果
  • を出力
    num=0
    sum=0
    while num<10:
        sum+=num
        num+=1
        print sum
     
    result:
    0
    1
    3
    6
    10
    15
    21
    28
    36
    45
    
  • whileはelseと結合する:whileサイクルが正常に終了した後にelse
  • を実行する.
    #coding:UTF-8
    num=0
    sum=0
    while num<3:
        sum+=num
        num+=1
        print sum
    else:
        print "down"
    
    result:
    0
    1
    3
    down
    

    正常でない終了(breakを使用)ではesle内の文は実行されません
    #coding:UTF-8
    num=0
    sum=0
    while num<5:
        if num==3:
            break
        sum+=num
        num+=1
        print sum
    else:
        print "down"
    
    result:
    0
    1
    3
    

    ただしcontinueを使用した場合、最後のループが実行されることを保証すればelse部分は実行されます
    #coding:UTF-8
    num=0
    sum=0
    while num<5:
        if num==3:
            num += 1
            continue
        sum+=num
        num+=1
        print sum
    else:
        print "down"
    
    result:
    0
    1
    3
    7
    down
    

    2.2循環文:for
  • forループの作用オブジェクト:文字列、メタグループ、リスト、フィールド、関数
  • などの反復可能なオブジェクト.
  • 構文フォーマット:for x in y.yは反復可能オブジェクトであり、xはfor文が反復可能オブジェクトyから取り出した各要素である.
  • ケース1:文字列を巡る
  • #coding:UTF-8
    string="tyson"
    for i in string:
        print i.upper(),
    
    result:
    T Y S O N
    

    ケース2:遍歴リスト
    List=["tySon,LAOWANG,laoli"]
    for i in List:
        print i.title(),
    
    result:
    Tyson,Laowang,Laoli
    

    ケース3:階乗計算
    #coding:UTF-8
    def jiecheng(num):
        chengji=1
        for i in range(1,num+1):
            chengji*=i
        return chengji
    
    print jiecheng(5)
    print jiecheng(3)
    
    result:
    120
    6
    

    ケース4:for文はelseと結合しており、最後のループが正常に終了した後に実行されます.whileとelseの結合と同じ場合
    def jiecheng(num):
        chengji=1
        for i in range(1,num+1):
            print "   ",i," "
            chengji*=i
        else:
            print "down"
            print "        :"
            return chengji
    
    print "    ",jiecheng(5)
    print "    ",jiecheng(3)
    
    result:
             1  
        2  
        3  
        4  
        5  
    down
            :
    120
             1  
        2  
        3  
    down
            :
    6
    

    ケース5:range()と組み合わせて階乗を実現する.range関数の簡単な説明:完全な構文range(start,end,step)、stepは0ではなく、デフォルトは1です.書き方1:range(x,y)は、xからy−1までの整数列を生成する.書き方2:range(y)は0からy-1までの整数列を生成する.

    ケース6:zip()文と組み合わせてマルチリストパラレルループを実現します.zip関数の簡単な紹介:完全な構文zip(list1,list2)、生成されたのは[(list1[0],list2[0]),(list1[1],list2[1]),(list1[n],list2[n]),]、すなわち内蔵メタグループのリストである.
    #coding:UTF-8
    list1=["tyson","laowang","laochen"]
    list2=[21,25,28]
    print "zip    :",zip(list1,list2)
    
    for x,y in zip(list1,list2):
        print x,y
    
    result:
    zip[('tyson', 21), ('laowang', 25), ('laochen', 28)]
    tyson 21
    laowang 25
    laochen 28
    

    ケース7:map()関数とmap関数を組み合わせた簡単な説明:完全な構文map(f,iterable)、map関数は反復可能なオブジェクトの各要素を関数処理に転送し、各処理の戻り値をリストに構成することができる(関数解析式で[f(x) for x in iterable]を実装することもできる).関数がNoneの場合,map関数は並列解析を実現できる.
    #coding:UTF-8
    list1=["tyson","laowang","laochen"]
    list2=[21,25,28]
    list3=["boy","boy","oldman"]
    print "map    (     None   ):",map(None,list1,list2)
    print "map    (     None   ):",map(None,list1,list2,list3)
    
    for x,y in map(None,list1,list2):
        print x,y
    
    for x,y,z in map(None,list1,list2,list3):
        print x,y,z
    
    result:
    map    (     None   )[('tyson', 21), ('laowang', 25), ('laochen', 28)]
    map    (     None   )[('tyson', 21, 'boy'), ('laowang', 25, 'boy'), ('laochen', 28, 'oldman')]
    tyson 21
    laowang 25
    laochen 28
    tyson 21 boy
    laowang 25 boy
    laochen 28 oldman
    

    ケース8:enumerate関数とenumerate関数を組み合わせて簡単に説明します.入力した反復可能なオブジェクトに反復器を返すために使用されます.構文:enumerate( ).
    #coding:UTF-8
    list1=["tyson","laowang","laochen"]
    print type(enumerate(list1))
    
    
    for x,y in enumerate(list1):
        print x,y
    
    result:
    <type 'enumerate'>
    0 tyson
    1 laowang
    2 laochen
    

    三、循環制御
    3.1 break
    whileおよびforループでは、ループ文**全体(この行のループの次のループは終了しません)**を終了します.
    ケース1:whileとbreakの結合
    n=0
    while n<10:
        if n==3:
            break
        print n
        n+=1
    
    result:
    0
    1
    2
    

    ケース2:forとbreakの結合
    name="hello,world"
    for i in name:
        if i == ',':
            break
        print i,
    
    result:
    h e l l o
    

    3.2 continue
    whileとforサイクルで使用し、今回のサイクルを終了します.
    name="hello,world"
    for i in name:
        if i == ',':
            continue
        print i,
    
    result:
    h e l l o w o r l d
    

    3.3 pass
    循環文、条件文、関数文に空を占め、文が完成することを保証し、後続のマスター部分の補充を待つ.
    #coding:UTF-8
    for i in "hello,world":
        pass