Python
 Computer >> コンピューター >  >> プログラミング >> Python

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文を必ずループの中に配置しましょう。

これで、このエラーをプロのように解決するための知識が身につきました!

  1. 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

  2. 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 この例で