Pythonの「SyntaxError: 'continue' not properly in loop」エラーの原因と解決方法を解説
Pythonのcontinue文は、ループ内の処理を次の反復(イテレーション)へスキップさせるためのキーワードです。このcontinue文をforループやwhileループの外で使用すると、「SyntaxError: 'continue' not properly in loop」というエラーが発生します。
この記事では、このエラーの意味と発生原因を詳しく解説し、実際のコード例を通じてエラーの解決方法をわかりやすく説明します。
SyntaxError: 'continue' not properly in loop とは?
continue文は、forループやwhileループの中で、以降の処理をスキップして次の反復に移るために使われます。break文と同様に、continue文は引数を取らず、プログラム内で単独の文として記述します。
continue文はループの中でしか使用できません。これは、continue文がループ内での使用を前提として設計されているためです。ループの外では「何を続行するのか」を判断する文脈が存在しないため、continueキーワードを機能させることができないのです。
なお、continue文は、if文などのコードブロックの中に置くことも可能です。ただし、そのコードブロック自体がループの内側にある必要があります。
エラーが発生するコード例
ここでは、コーヒーショップの在庫管理システム向けに、ユーザーの入力値を検証するプログラムを作成してみましょう。入力が有効とみなされる条件は、3文字以上であることとします。
まず、システムに登録したい商品名の入力をユーザーに求めるコードを記述します。
product_name = input("Enter the product name: ")
次に、この入力値を検証します。if文を使って、入力が3文字以上であるかどうかをチェックしましょう。
if len(product_name) < 3:
print("Product names must be at least three characters long.")
continue
else:
break
print("Your product name is valid.")
ユーザーが3文字未満の商品名を入力した場合は、コンソールにメッセージが表示され、その後continue文が実行されます。それ以外の場合はbreak文が実行されます。商品名の文字数の取得にはlen()関数を使用しています。
商品名が有効であれば、その旨を知らせるメッセージがコンソールに表示される仕組みです。
検証処理が書けたところで、コードを実行してみましょう。プログラムを実行すると、次のような結果になります。
File "main.py", line 3
continue
^
SyntaxError: 'continue' not properly in loop
このように、エラーが発生してしまいました。
エラーの解決方法
このプログラムでは、特定の条件が満たされた場合に処理を続行させるためにcontinue文を使用しようとしました。continue文はif文の中で使うこと自体は可能ですが、そのif文を含め、continue文は必ずループの内側に配置しなければなりません。
しかし、このプログラムにはループが存在しないため、continue文の使用が無意味になっているのです。これがエラーの原因です。このエラーを解決するには、コード全体をループで囲みます。
while True:
product_name = input("Enter the product name: ")
if len(product_name) < 3:
print("Product names must be at least three characters long.")
continue
else:
break
print("Your product name is valid.")
コードに加えた変更は1点だけです。プログラム全体をwhileループの中に移動しました。これにより、ループが終了するまで、ユーザーに対して商品名の入力を繰り返し求める動作になります。
ループは、ユーザーが有効な商品名を入力したときにのみ終了します。無効な入力があった場合は、コンソールにメッセージが表示され、ループが再度実行されます。
それでは、プログラムを実行して動作を確認してみましょう。
Enter the product name: Rwandan
Your product name is valid.
コードが正常に実行されました!次に、無効な商品名を入力した場合の動作も試してみます。
Enter the product name: RW
Product names must be at least three characters long.
Enter the product name:
プログラムは入力された商品名を無効と判断し、改めて商品名の入力をユーザーに促します。期待どおりの動作です。
まとめ
「SyntaxError: 'continue' not properly in loop」エラーは、continue文をforループやwhileループの外で使用しようとしたときに発生します。このエラーを解決するには、コード内のすべてのcontinue文を必ずループの中に配置しましょう。
これで、このエラーをプロのように解決するための知識が身につきました!
-
Pythonの「is not」演算子とは?仕組みと使い方をわかりやすく解説
Pythonの「is not」演算子とは Pythonにおける「is not」は、同一性を比較する演算子(アイデンティティ演算子)の一つです。演算子の左右にある2つの変数が同じオブジェクトを参照している場合には False を返し、異なるオブジェクトを参照している場合には True を返します。 基本的な使い方の例 以下のコードで実際の動作を確認してみましょう。 >>> a = 10 >>> b = 20 >>> id(a), id(b) (1581561184, 1581561504) >>> a is not b
-
Pythonの「not in」演算子とは?使い方と動作をわかりやすく解説
Pythonには、要素があるシーケンス(リスト・タプル・文字列など)に含まれていないことを判定するための「not in」というメンバーシップ演算子が用意されています。 not in 演算子は、指定したシーケンスの中に変数が見つからない場合に True を返し、見つかった場合は False を返します。以下に具体的な例を示します。 >>> a = 10 >>> b = 4 >>> l1 = [1,2,3,4,5] >>> a not in l1 True >>> b not in l1 False この例で