python loops while
このビデオチュートリアルでは、Pythonでのループの役割とそのタイプについて説明します。For、While、Nested Loopsと、構文および実用的なプログラミング例:
私たちは4つの異なることについて学びました Pythonの条件文 前のチュートリアルで。
ループは、ほとんどすべての最新のプログラミング言語でサポートされている強力なプログラミング概念です。これにより、プログラムは反復を実装できます。これは、基本的に、同じコードブロックを2回以上実行することを意味します。
これらはすべての最新のプログラミング言語でサポートされており、同様の基本機能を提供しますが、実装と構文は異なる場合があります。
ザ・ Pythonの完全なトレーニングシリーズ Pythonが何であるかについての簡単なアイデアを提供します。
学習内容:
Pythonループビデオチュートリアル
Pythonループとは
Pythonでは、ステートメントは順番に実行されます。つまり、コードが複数行のコードで構成されている場合、実行は最初の行から始まり、2番目の行が続きます。
ただし、条件が満たされるまで、コードのブロックを数回実行したい場合があります。ループステートメントのおかげで、まさにそれを行うことができます。
以下に、ループステートメントがどのように機能するかを示すフローチャートを示します。

上の図に基づいて、Pythonプログラムは次の場所で開始されます。 開始 (circle)、実行は条件ステートメント(Diamond)に進み、条件がTRUEの場合、プログラムはコードブロックを実行します。
実行は再び条件ステートメントに進み、条件がTRUEになるたびに同じプロセスが続行されます。条件がFALSEの場合にのみ、ループから抜け出すか、コードブロックの実行を停止します。この場合、プログラムは順次実行を継続します。
Pythonには2種類のループがあります。
# | ループタイプ | 説明 |
---|---|---|
1 | forループ | はイテレータベースのループであり、リスト、タプル、文字列などの反復可能なオブジェクトの項目をステップスルーし、その反復可能なオブジェクト内の項目の数に基づいて、コードを何度も繰り返し実行します。 |
二 | whileループ | 条件がTRUEである限り、ステートメントのブロックを繰り返し実行します。 |
これらの2種類のループは、相互に内部で使用して生成できます。 ネストされたループ (これについては後で詳しく説明します)。
Pythonループの一般的な使用
Pythonでは、ループを使用して、すばらしい複雑な問題を解決できます。条件が満たされるまでアクションを繰り返す必要がある問題(whileループがここで最適に機能する)または多数のアイテムに対してアクションを実行する必要がある問題(forループがここで最適に機能する)が発生する可能性があります。
PythonのForループ
ザ・ forループ 次のような反復可能なオブジェクトでうまく機能します リスト 、 タプル 、 文字列 このようにして、これらのオブジェクトのアイテムをステップスルーし、リンクに基づいてそれらの値を操作できます。
ザ・ forループ はゼロインデックスであり、次の構文を持っています。
for in n:
の状態 forループ 反復可能オブジェクト(n)内のすべてのアイテムを反復処理していない場合にのみ、TRUEを維持します。よりよく理解するために forループ 、いくつかの例を取り上げ、最後に実際の例に取り組みます。
例1:開始から終了までの範囲の番号を印刷します
これを実現するために、Pythonを使用します 範囲 関数。
フローチャートは次のようになります。

def range_from_start_to_end(start, end): for i in range(start, end+1): print(i) if __name__ == '__main__': start = int(input('Enter a start number: ')) end = int(input('Enter an end number: ')) # Call our function to print the ranges range_from_1_to_20(start, end)
出力
上記の例では、Pythonの範囲を使用しました。これは、数値のシーケンスを返す関数です。 開始 数値(デフォルトでは0)、増分 ステップ (デフォルトでは1)、および 終わり 数。
この例では、次のものがあります。
Python範囲関数のパラメーターと値
パラメーター | 値 |
---|---|
開始 | 1 |
終わり | 20 |
ステップ | 1(デフォルト値) |
だから、私たちの forループ 1から20までの一連の数値を反復処理し、反復ごとに数値を出力します。シーケンス内のすべての番号にアクセスすると、反復は停止します。
例2:数が素数であるかどうかを判別します。
この例では、理由がわかります forループ とても強力で便利です。ここでは、一連の数値を反復処理し、数値ごとに、条件がTRUEかFALSEかを判断するための計算を実行します。
数が素数になるための条件を知ることは役立つかもしれません。
- 数値は常に正で、1より大きくなります。
- 1とそれ自体以外に正の約数はありません。
def isPrime(number): # rule 1: number should be positive, and greater than 1. if number > 1: # iterate over a range from 2 to half the number. for i in range(2, number//2): # rule 2: shouldn't have any positive divisor # order than 1 and itself. if(number % i) ==0: return False return True else: return False if __name__ == '__main__': number = int(input('Enter number to check if it's prime: ')) if isPrime(number): print('{} is a prime number'.format(number)) else: print('{} is not a prime number'.format(number))
入力が13のときの出力
入力が10のときの出力
注意: ザ・ if-else 上記の例で使用されているのは条件文であり、ループではありません。しかし、ちょうどのように whileループ (これについてはすぐに説明します)、条件に比較演算子を使用します。
例–forループを使用してテキスト内の単語数を検索する
この例は、各単語がテキストに出現する回数を数えることに関するものです。これを実現する方法はたくさんありますが、この例では、 forループ 。
以下のテキストから単語を数えます。
こんにちは、ソフトウェアテストヘルプへようこそ。この記事「Pythonのループ」では、実際の例を使用してループについて学習します。いいですね?一緒に学びながら、必ずフォローしてください。
ハッピーコーディング!
最初に行うことは、句読点、空白、およびすべての小文字を削除することです。テキストに存在する句読点を特定することにより、従来の方法で句読点を削除してから、 forループ それらを空の文字列に置き換えます。
テキストが少ないので、句読点が カンマ (、)、 限目 (。)、 疑問符 (?)、 結腸 (:)、 二重引用符 (“)および アポストロフィ ( ‘)。
以下に、それらを空の文字列に置き換えるコードを示します。アポストロフィは置き換えないことに注意してください。
# replace punctuation(except apostrophe) and white spaces for punc in '.,
?!'': text = text.replace(punc, '') # lowercase all letters. text = text.lower()
出力
次に、テキストを空白で区切られた単語のリストに分割します。
# Split text into list of words separated by whitespaces(tab, newline) text = text.split()
出力
最後に、分割されたテキストで各単語が何回出現するかを数えて確認します。
# initialize a dictionary to hold words:count wordsCount = {} # if a word is already a key in our dictionary, increment it's value. # If not, initialize it's value to 1. for word in text: wordsCount(word) = wordsCount.get(word, 0) + 1
出力
いくつかの単語が2回出現し、いくつかは1回だけ出現することがはっきりとわかります。明確に区別できるように、この辞書を値の降順で並べ替えてみましょう。ここでは、Pythonを使用しました ソートされた関数 、 ラムダ式 、および 辞書の理解 。
削除されたファイルを回復するための最高のソフトウェア
# Sort dictionary by value, in descending order wordsCount = {w: c for w, c in sorted(wordsCount.items(), key=lambda item: item(1), reverse=True)}
最後に、 forループ テキスト内の単語をクリーンアップ、カウント、およびソートします。
以下に完全なコードを示します。
def word_count(text): # initialize a dictionary to hold words:count wordsCount = {} # replace punctuation(except apostrophe) and white spaces for punc in '.,
?!'': text = text.replace(punc, '') # lowercase all letters. text = text.lower() # Split text into list of words separated by whitespaces(tab, newline) and apostrophe(') text = text.split() # if a word is already a key in our dictionary, increment it's value. # If not, initialize it's value to 1. for word in text: wordsCount(word) = wordsCount.get(word, 0) + 1 # Sort dictionary by value, in descending order wordsCount = {w: c for w, c in sorted(wordsCount.items(), key=lambda item: item(1), reverse=True)} print(wordsCount) if __name__ == '__main__': text = 'Hello, welcome to Software Testing Help. In this article: 'Loops in Python', you'll learn about loops with practical examples. Great right? Make sure to follow along as we learn together.
Happy coding!' word_count(text)
最終出力
Whileループ
Python whileループ 条件がTRUEである限り、ステートメントのブロックを繰り返し実行します。私たちはそれが少し似ていることに気づきます ifステートメント 。ただし、 whileループ 、ifステートメントは、その条件がTRUEの場合に1回だけ実行されます。
whileループの構文は次のとおりです。
While condition: expression(block of code)
とは異なり forループ 、 whileループ シーケンスを反復しません。条件に比較演算子とブール値を使用します。
それがどのように使用されるかをよりよく理解するために、いくつかの例を見てみましょう。
例1:「HelloWorld!」を印刷しますカウント回数
ザ・ whileループ 状態をチェックします(カウント
フローチャートは次のようになります。
def print_count_times(n): # set count to 0 count = 0 while count 出力:

例2:数の階乗を見つける
数の階乗は次のように表されます。 n! そしてそれは式を持っています
1*2*...*(n-1)
プログラムは、数値が0であるかどうかをチェックし、1を返します(0の階乗は1です)。そうして whileループ 条件(n> = 1)をチェックして、nが1に等しいか1より大きいかを確認します。この条件がTRUEになるたびに、プログラムはループブロック内の式を計算します。
whileループを使用して、階乗の問題を解決しましょう
def factorial(n): if n == 0: # The factorial of 0 is 1. return 1 else: fac = 1 while n >= 1: # while this condition is TRUE # 1*2*3*...*(n-1) fac *= n # same as 'fac = fac * n' n -= 1 # same as 'n = n - 1' return fac if __name__ =='__main__': n = int(input('Find factorial of: ')) fac = factorial(n) print('Factorial of {} is {} '.format(n,fac))
出力

例–Whileループを使用してn番目の項までのフィボナッチ数列を見つける
フィボナッチ数列には次の式があります。
0,1,1,...((n-1)th + (n-2)th)
最初の2つの数値は0と1で、次の数値は前の2つの数値(n-1)番目と(n-2)番目の合計です。
8のフィボナッチ数列は0、1、1、2、3、5、8、13になります
def fibonacci(n_term): n1 = 0 # (n-1)th if n_term == 1: # if n_term term is 1, print 0 print(n1) else: count = 0 n2 = 1 # (n-2)th # Loop while 'count 出力

プログラムは最初に最初のn番目の値(n1 = 0)を定義し、次に引数として渡されたn_termが1に等しいかどうかをチェックします。TRUEの場合、0を返します。
それ以外の場合は、2つの変数を定義します。
- count = 0:これはで使用されます whileループ カウントがn_term(count)よりも小さい場合に条件をチェックします
- n2 = 1:これは2番目のn番目の値です。
これまでのところ、シーケンスには0,1があります(n1、n2)。条件がTRUEの場合:
- n2の値は、一時変数(temp = n2)に割り当てられます。
- 前の2つの数値の合計が計算され、n2(n2 = n1 + n2)に割り当てられます。
- 一時値(n2の古い値)がn1(n1 = temp)に割り当てられます。
- カウントがインクリメントされ(カウント+ = 1)、条件が再度チェックされます。
最初の反復の終わりには、0,1,1があります。ここで:
- n1 = 1(最初の1)
- n2 = 1(2番目の1)
この操作は、条件がカウントされるまで繰り返されます ネストされたループ
Pythonループの優れた点は、ネストできることです。つまり、別のループ内で1つ以上のループを使用できます。これにより、さらに複雑な問題を解決できます。
#1)ループのネスト
forループはそれ自体の中にネストすることができます。以下の構文は、1レベルのネストされたforループを示しています。
for in n: # piece of code goes here for in n: # piece of code goes here
例1:ネストされたforループを使用して、パターンで数値を出力します
ネストされたforループを使用して、次のパターンを出力してみましょう。
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
各番号は、その番号自体に対応する回数印刷されます。
フローチャートは次のようになります。

ネストされたforループのフローチャート def print_numbers(): for i in range(1, 6): # outer loop for j in range(i): # 1st level inner loop print(i, end=' ') print('
') if __name__ == '__main__': print_numbers()
出力

私たちのプログラムは次のように機能します。
- 外側のループは、1から6の範囲で、そのシーケンスの各項目に対して繰り返されます。
- それはそのアイテムの範囲を反復する内側のループに入ります。
- そのアイテムの反復ごとに、アイテムを出力します。
- そのアイテムの範囲を完全に反復した場合にのみ、内部ループを離れます。
- 内側のループを離れると、外側のループに戻り、シーケンスが完全に繰り返されるまでプロセスが続行されます。
例2:ネストされたforループを使用して、ネストされたリストのアイテムを操作します
Pythonで遭遇する可能性が高い状況は、ネストされたリストのアイテムにアクセスすることです。
たとえば、以下のネストされたリストを見てください。
>>> ((3,4.0,2,8.4,6),(0,2,0.2,4,6),(9,3.5,0.32,5,4))
この例では、 このネストされたリスト内の整数と浮動小数点数をカウントするプログラムを作成しましょう。
def float_and_int_count(nested_list): float_count = 0 # set our float count to zero int_count = 0 # set our integer count to zero for l in nested_list: # outer loop accesses each list in the nested list for item in l: # inter loop accesses each item in the list if isinstance(item, int): # if item is an instance of int int_count += 1 # increment integer count elif isinstance(item, float): # if item is an instance of float float_count += 1 # increment float count # return a tuple return float_count, int_count if __name__ == '__main__': nested_list = ((3,4.0,2,8.4,6),(0,2,0.2,4,6),(9,3.5,0.32,5,4)) float_n, int_n = float_and_int_count(nested_list) print('Float count: {}
Integer count: {}'.format(float_n, int_n))
出力

私たちのプログラムは次のように機能します。
- 外側のループは、ネストされたリストの最初の内側のリスト(3,4.0,2,8.4,6)にアクセスします。
- 内部ループは、この最初の内部リストの各項目にアクセスします。アイテムごとに、それが浮動小数点か整数かをチェックします。整数の場合は、整数カウント(int_count)をインクリメントします。それ以外の場合、floatの場合は、floatカウント(float_count)をインクリメントします。
- この最初の内部リストの反復が完了すると、外部ループに戻って2番目のリスト(0,2,0.2,4,6)にアクセスし、すべての内部リストにアクセスするまで同じプロセスが続行されます。
#2)Whileループのネスト
whileループは、ループ内にネストできます。
以下の構文は、1レベルのネストされたwhileループを示しています。
while condition: # piece of code goes here while condition: # piece of code goes here
例3:ネストされたwhileループを使用して、星(*)をパターンで出力します
ネストされたwhileループを使用して、次のパターンを作成しましょう。
* * * * * * * * * * * * * * *
def print_pattern(n): i = 0 # initialize to zero for outer loop j = 0 # initialize to zero for inner loop while i <= n: # outer loop runs n times while j < i: # inner loop runs i times print('*', end=' ') j += 1 # increment before checking inner loop condition j = 0 # re-initialize after leaving inner loop i += 1 # increment before checking outer loop condition print('') if __name__ == '__main__': n = 5 print_pattern(5)
出力

私たちのプログラムは次のように機能します。
- 変数が初期化されます(i = 0、j = 0、n = 5)
- 外側のループは条件をチェックします(0<= 5) which is obviously TRUE.
- 内側のループは条件をチェックします(0<0) which is obviously FALSE, so our program breaks out of the inner loop.
- iがインクリメントされ、外側のループがその状態を再度チェックします(1<= 5) which is TRUE.
- 内側のループは条件をチェックします(0<1) which is TRUE. So a star( * )が出力され、jがインクリメントされ、内部ループ条件が(1<1) which is FALSE, thus breaks out of the inner loop.
上記のプロセスは、外側のループ条件がFALSEになるまで続きます。
PCをクリーンアップするための最良のソフトウェア
例–数字のスペリングゲーム
で切り上げるには ネストされたループ 、数字を認識してつづる子供の能力を評価するのに役立つエキサイティングなゲームを作成します。
プログラムは画面に乱数を表示し、その番号のスペルを要求します。入力が正しいかどうかを確認してから、別の番号を表示します。入力が間違っている場合は、エラーメッセージを送信し、別の回答を要求します。
import random # random contain 'shuffle' used to shuffle our list def word_spelling(): print('HELLO, WELCOME TO THE WORD SPELLING GAME.
') print('SPELL AS MUCH NUMBERS AS YOU CAN TO GET MARKS
') print('-----------------------------------------------
') correct_score = 0 # keep record of correct spellings wrong_score = 0 # keep record of wrong spellings exceeding number of trials max_trials = 3 # maximum number of trials # A dictionary of numbers as keys and spellings as values. This can be expanded to increase its level of difficulty. number_spell = {0:'zero',1:'one',2:'two',3:'three',4:'four',5:'five',6:'six', 7:'seven',8:'eight',9:'nine',10:'ten'} # get the list of keys from the dict and shuffle them so that random numbers are displayed on the screen. number_spell_keys = list(number_spell.keys()) random.shuffle(number_spell_keys) # Our game starts here for number in number_spell_keys: # outer loop is a for loop which iterate through the keys trial_count = 0 # keeps track of number of trials while trial_count 出力

forループとwhileループの主な機能は次のとおりです。
- ザ・ forループ スペルするためにユーザーに提示される数字のリストを繰り返し処理します。
- ザ・ whileループ 試行回数を超えていないか確認します。このようにして、ユーザーはそれを正しく行うために最大数の試行が与えられます。
2つの新しい概念を見てきました while-else 、 ブレーク (これについては後で詳しく説明します)。ザ・ whileループ そして forループ もともと持っている elseステートメント これは、条件がFALSEの場合に1回だけ実行されます。
Python無限ループ
ループの実装方法に注意しないと、次のような事態につながる可能性があります。 無限ループ つまり、プログラムは、コンピュータがCPUメモリなどのリソースを使い果たすまで、コードのブロックを永久に実行します。
例1:無限のwhileループ
def infinit_loop_1(): numb = 0 while numb <5: print(numb) if __name__ == '__main__': infinit_loop_1()
出力

注意 :このプログラムの実行を停止するには、Ctrl + zまたはCtrl +を使用します c コードの実行に使用した端末で。
上記のコードは、 無限のwhileループ 。しかし、これは間違いです。 whileループ 状態の無感覚をチェックします<5, but there is nowhere in the code that actually increments the numb’s value. Hence the value of numb is always zero and the condition keeps returning TRUE.
したがって、これを修正する方法は、numbの値をインクリメントする手段を提供することです。
def infinit_loop_1(): numb = 0 while numb <5: print(numb) numb += 1 # fix by incrementing numb's value if __name__ == '__main__': infinit_loop_1()
出力

そのまま質問が発生する場合があります 無限ループ 本当に必要ですか?ネタバレ注意:はい、そうです。サーバーは、クライアントのニーズに対応しながら継続的に実行するようにプログラムできます。ゲームでは、ユーザーがループを終了または中断するアクションを選択するまで、イベントが実行される場合があります。
信じられないかもしれませんが、実際に使用したのは 無限ループ 上記の最後の実際的な例では。だから、私たちはどのように対処しますか 無限ループ ?
PythonのBreakAndContinueステートメント
上で説明したように、意図的に書く必要がある場合があります 無限ループ 。これらの場合、次のことがわかります。 ブレーク そして 継続する キーワードはのバックボーンです 無限ループ 。
ザ・ ブレーク そして 継続する キーワードはPython内で一般的に使用されます ifステートメント ここで、ifステートメントが条件をチェックし、それがTRUEの場合、ifステートメントが呼び出されたループから抜け出すか、その下のすべてのコードをスキップしてループの最初に戻ります。
例–しきい値に達するまで数値を累積する
ランダムに生成されたソースから数値を取得し、しきい値に達するまで数値を累積するプログラムについて考えてみましょう。
この例で無限ループが必要な理由は、累積数がしきい値に達するためにプログラムが実行する必要のある反復回数が正確にわからないためです。
私たちの唯一の救世主はPythonです ifステートメント と一緒に breakステートメント 。 ifステートメントは、しきい値に達しているかどうかをチェックし、TRUEの場合はループから抜け出します。
私たちのプログラムでは、制限された数を累積しないようにする必要もあります。したがって、プログラムでこれらの番号が検出された場合は、すべてのコードをスキップして、ループの最初に戻る必要があります。これは、 ステートメントを続ける 。
import random def acc_numbers(): acc_numb = 0 # initialize our accumulator threshold = 45 # define our threshold value Rejected_numbers = (4,0,1) # define our rejected numbers while True: # This is an uncontrolled condition. # our infinite while loop # return random integer number within 0 and 10. numb = random.randint(0, 10) # check if the number is in the list of rejected numbers if numb in Rejected_numbers: print('Not accepting ', numb) continue # skip all code blow it and return to the beginning of the while loop # add random number to our store acc_numb += numb # check if the accumulated number has reached threshold if acc_numb >= threshold: print('Threshold attended') break # break out of the loop. if __name__ == '__main__': acc_numbers()
出力

よくある質問
Q#1)Pythonでループをどのように制御しますか?
回答: Pythonでは、次の制御ステートメントを使用してループを制御できます。
- ザ・ ブレーク キーワードがループから抜け出します。
- ザ・ 継続する キーワードはその下のすべてのコードをスキップし、ループの最初に戻ります。
これらのキーワードは主に ifステートメント 最初に、条件がTRUEかFALSEかをチェックします。
Q#2)forループとwhileループの違いは何ですか?
回答: に forループ は イテレータベースのループ 、次のような反復可能なオブジェクトのアイテムをステップスルーします リスト 、 タプル 、など。 whileループ は 条件ベースのループ 、条件がTRUEである限り、ステートメントのブロックを繰り返し実行します。
Q#3)Pythonはループまでサポートしますか?
回答: 残念ながら、Pythonは do-whileループ 。
Q#4)Pythonの2種類のループは何ですか?
回答: Pythonは通常、次の2種類のループをサポートしています。 forループ そして whileループ 。ただし、3番目のループ( ネストされたループ )は、これらのループを2つ以上ネストすることで生成できます。
Pythonループの詳細
Pythonのループステートメントは、ユーザーの指定に従って、ステートメントまたはコードのブロックを数回繰り返し実行するために使用されます。
Pythonは、以下に示すように2種類のループを提供します。
- whileループ
- Forループ
#1)whileループ:
Pythonのwhileループは、指定された条件が真になるまで、複数のステートメントまたはコードを繰り返し実行するために使用されます。
反復する回数がわからない場合は、whileループを使用します。
構文:
while (expression): block of statements Increment or decrement operator
whileループでは、式をチェックします。式がtrueになると、whileループ内に存在するステートメントのブロックが実行されます。反復ごとに、条件をチェックし、条件がfalseになるまでステートメントのブロックを実行します。
例:
number = 5 sum = 0 i = 0 while (i 出力:
10

出力:

#2)Forループ:
Pythonのforループは、指定された条件がfalseになるまで、ステートメントまたはコードのブロックを数回実行するために使用されます。
反復する回数がわかっている場合は、forループを使用します。
Android携帯でネットワークセキュリティキーを見つける方法
構文:
for var in sequence: Block of code
ここで、varはシーケンスから値を取得し、シーケンス内のすべての値が完了するまで実行します。
例:
language = (‘Python’, ‘Java’, ‘Ruby’) for lang in language: print(“Current language is: “, lang)
出力:
現在の言語は:Python
現在の言語は次のとおりです。Java
現在の言語は:Ruby

出力:

range()関数を使用したforループ:
Range()関数は、一連の数値を生成するために使用されます。
例えば、 範囲(5)は、0から4までの数値(5つの数値)を生成します。
例:
language = (‘Python’, ‘Java’, ‘Ruby’) for lang in range(len(language)): print(“Current language is: “, language(lang))
出力:
現在の言語は:Python
現在の言語は次のとおりです。Java
現在の言語は:Ruby

出力:

結論
このチュートリアルでは、ループの定義、Pythonループの種類、 forループ、 そして whileループ いくつかの例で。
また、その方法を学びました ネストされたループ 生成され、 有限ループ 同様に、私たちは使用方法を知るようになりました ブレーク そして 継続する キーワード。
=> ここですべてのPythonチュートリアルを確認してください
推奨読書