Pythonベース(7)——ループ文(for,while,ネストループの用法詳細)

5201 ワード

forサイクル
文を繰り返します.サイクル数が既知である場合にforサイクルを使用し、すべてのforサイクルをwhileサイクルで実現することができる.
whileサイクル
与えられた判定条件がtrueの場合にループを実行し、そうでなければループを終了する.ループ回数が不明な場合はwhileループを使用します.
ネストされたループ
ループボディにネストされたループ.
一、forサイクル
forループは、あるオブジェクトを巡回するために使用できます(巡回:一般的には、このループの最初の要素を最後の要素に順次アクセスします).
1、forリサイクルシナリオ
  • 操作を繰り返し実行し、サイクル数が既知である場合にforサイクルを使用することができます.
  • すべてのforサイクルはwhileによって
  • を実現することができる.
    2、文法形式:
    for i in    :   #                
              

    3、forループ操作例
    forループは、文字列、メタグループ、リスト、コレクション、辞書、ファイルなど、数値以外のデータの基本タイプを巡回することができ、シーケンスインデックスで巡回することもできます.具体的な操作は以下の通りです.
    1>forループ文字列
    str1='abc'
    for i in str1:
        print(i)
    
        :
    a
    b
    c

    2>forループメタグループ
    tup1=(31,29,31,30,31,30,31,31,30,31,30,31)
    for i in tup1:
        print(i,end=' ')   #end=' '    
    
        :
    31 29 31 30 31 30 31 31 30 31 30 31

    3>forループリスト
    Fruits=['apple','orange','banana','grape']
    for fruit in Fruits:
        print(fruit)
    
        :
    apple
    orange
    banana
    grape

    4>forループループコレクション
    set1={'lisi',180,60,99}    
    for i in set1:
        print(i)
    
        :
    lisi
    99
    180
    60

    5>forループ辞書
    dict1={'name':'lisi','height':180,'weight':60,'score':99}
    for k,v in dict1.items():    #    dict1       
        print(k,'--->',v)
    print('--------------')  
    for k in dict1.keys():       #    dict1     
        print(k)
    print('--------------')     
    for v in dict1.values():     #    dict1      
        print(v)
    
        :
    name ---> lisi
    height ---> 180
    weight ---> 60
    score ---> 99
    --------------
    name
    height
    weight
    score
    --------------
    lisi
    180
    60
    99

    6>ファイルの遍歴
    for content in open("1.txt"):   #      1.txt
        print(content)
    
        :
           ,       。
    
    
    
           ,       。

    7>forサイクル1~9乗算
    sum = 1
    for i in list(range(1,10)):   #range       
        sum *= i
    print("1*2...*10 =",sum)
    
        :
    1*2...*10 = 362880

    8>これに加えて、シーケンスインデックスを使用して巡回することもできます.
    rangeの使い方:range(5)-0から5まで5を含まないパラメータ(すなわち左を含むか右を含まない);range(5,15)-5から15まで15を含まない2つのパラメータ.range(5,55,5)-5から55までの3つのパラメータで、最後のパラメータ5はステップ長です.
    次の例では、組み込み関数len()とrange()を使用し、関数len()はリストの長さ、すなわち要素の個数を返します.rangeは整数シーケンスを返します.
    fruits = ['banana','apple','mango','grape']
    for index in range(len(fruits)):
       print('     :', fruits[index])
    
        :
         : banana
         : apple
         : mango
         : grape

    二、whileサイクル
    whileループは,条件が満たされる限りループを続け,条件が満たされない場合にループを終了する.ここで、実行文は単一の文または文ブロックであってもよく、判断条件は任意の式であってもよく、ゼロでない値、またはnullでない値はtrueである.
    1、文法形式:
    while     :   #    boolean      
            

     2、while循環操作例:
    1>1から100までの偶数和を求める
    n=1
    sum=0
    while n <= 100:
        if n%2==0:
           sum += n
        n=n+1
    print('1 100     :',sum)
    
        :
    1 100     : 2550

    2>1~100までの3~5の倍数、3の倍数、5の倍数をすべて印刷
    n=1
    bei3_5=[]
    bei3=[]
    bei5=[]
    while n<=100:
        if (n%3==0)and(n%5==0):
            bei3_5.append(n)
        elif n%3==0:
            bei3.append(n)
        elif n%5==0:
            bei5.append(n)
        n=n+1
    else:                                     #while...else       false   else 
        print('1-100  3 5    :',bei3_5)
        print('1-100  3    :',bei3)
        print('1-100  5    :',bei5)
        print('    ')
     
        :
    1-100  3 5    : [15, 30, 45, 60, 75, 90]
    1-100  3    : [3, 6, 9, 12, 18, 21, 24, 27, 33, 36, 39, 42, 48, 51, 54, 57, 63, 66, 69, 72, 78, 81, 84, 87, 93, 96, 99]
    1-100  5    : [5, 10, 20, 25, 35, 40, 50, 55, 65, 70, 80, 85, 95, 100]
        
    

     forサイクルとwhileサイクル、両者の同じ点はすべて繰り返しのことをすることができることです;異なる点は,forループはシーケンスが尽きたときに停止し,whileループは条件が成立しないときに停止することである.
    三、入れ子循環
    Python言語では、あるループに別のループを埋め込むことができます.for(while)サイクルネストfor(while)サイクルをfor(while)サイクルすることもできますし、whileサイクルにforサイクルを埋め込むこともできます.逆に、forサイクルにwhileサイクルを埋め込むこともできます.
    1>forループネストforループ-九九乗算表を印刷
    for i in range(1,10):
        for j in range(1,i+1):
            print(j,'*',i,'=',(j*i),end='\t')
        print()

    2>whileループネストwhileループ-九九乗算テーブルを印刷します(forループに比べてwhileループは面倒ですが、2つの結果は同じです)
    i=j=1
    while i < 10:
        while j <= i:
            print(i,"*",j,"=",i*j,end='\t')
            j+=1
        print()   
        i+=1
        j=1
    
        :
    1 * 1 = 1
    2 * 1 = 2       2 * 2 = 4
    3 * 1 = 3       3 * 2 = 6       3 * 3 = 9
    4 * 1 = 4       4 * 2 = 8       4 * 3 = 12      4 * 4 = 16
    5 * 1 = 5       5 * 2 = 10      5 * 3 = 15      5 * 4 = 20      5 * 5 = 25
    6 * 1 = 6       6 * 2 = 12      6 * 3 = 18      6 * 4 = 24      6 * 5 = 30      6 * 6 = 36
    7 * 1 = 7       7 * 2 = 14      7 * 3 = 21      7 * 4 = 28      7 * 5 = 35      7 * 6 = 42      7 * 7 = 49
    8 * 1 = 8       8 * 2 = 16      8 * 3 = 24      8 * 4 = 32      8 * 5 = 40      8 * 6 = 48      8 * 7 = 56      8 * 8 = 64
    9 * 1 = 9       9 * 2 = 18      9 * 3 = 27      9 * 4 = 36      9 * 5 = 45      9 * 6 = 54      9 * 7 = 63      9 * 8 = 72      9 * 9 = 81