呪文句の検証
最後のチャレンジとして、杖に呪文をかけるために使用される句を検証します。句は厳格なパターンに従わなければなりません。つまり、魔法の言葉で始まり、コロンが続き、その後にコンマ区切りの魔法的なパラメータまたは呪文のシリーズが続きます。有効な呪文句は 'Lumos:maxima,solemnly,nova' のようになります。
~/project
ディレクトリにある enchantment_validator.py
を開き、正規表現を使って呪文句のリストを検証する関数を書きましょう。
import re
def validate_enchantment(phrase):
## 有効な呪文句をマッチさせる正規表現パターン
pattern = r"^[A-Za-z]+:(?:[A-Za-z]+,)*[A-Za-z]+$"
if re.fullmatch(pattern, phrase):
return True
else:
return False
## 検証する句のリスト
phrases = [
"Lumos:maxima,solemnly,nova",
"Reducio:shrink,less",
"Protego:maxima",
"Alohomora:",
"Expelliarmus:disarm,fight,duel,"
]
## 各句を検証する
for phrase in phrases:
result = validate_enchantment(phrase)
print(f"'{phrase}' is {'valid' if result else 'invalid'}")
コードを実行して、検証結果を確認しましょう。
python enchantment_validator.py
期待される出力は、どの句が有効かを示すものでなければなりません。
'Lumos:maxima,solemnly,nova' is valid
'Reducio:shrink,less' is valid
'Protego:maxima' is valid
'Alohomora:' is invalid
'Expelliarmus:disarm,fight,duel,' is invalid