当コラムでは、PythonZen & PEP 8 検定試験(こちらでオンライン受験できます)で出題されている問題の解説を行なっています。当コラムシリーズを読んで自信がついたら、ぜひ試験に挑戦してみてくださいね。
今回のコラムで解説する試験問題はこちらです。
問題
Zen of Pythonの「特殊なケース(special cases)」に関する格言について、__(?)__ に当てはまるものを次の選択肢の中から選びなさい。
Special cases aren’t special enough to __(?)__ the rules.
- follow
- break
- have
- keep
解答のヒント
この格言は、「特殊なケースは、ルールを __(?)__ するほど特殊ではない(いくら特殊だからといって、ルールを __(?)__ してよいわけではない)」と訳せる格言です。ルールに対して何をやりすぎるとダメなのでしょうか?
- follow・・・ルールに従う
- break・・・ルールを破る
- have・・・ルールがある
- keep・・・ルールを守る
この格言を守っているサンプルコードと、守っていないサンプルコードを見比べてみれば、答えが分かるでしょう。
格言を守っているサンプルコード
# 割引価格を計算する
def calculate_discount(price, is_special_offer):
if price < 0:
raise ValueError("priceは負の数にできません。")
if is_special_offer:
return price * 0.9 # 10%割引
return price
calculate_discount(100, False) # 結果:100
このコードでは、価格(price)が負の数である場合に例外を投げることで、「価格は負の数にはならない」という一般的なルールを守っています。
格言を守っていないサンプルコード
# 割引価格を計算する
def calculate_discount(price, is_special_offer):
if is_special_offer and price < 0:
return 0 # 特別なケース
elif price < 0:
raise ValueError("priceは負の数にできません。")
if is_special_offer:
return price * 0.9 # 10%割引
return price
calculate_discount(-100, True) # 結果:0(負の価格が許容されている)
このコードでは、特別なオファーがあれば負の価格を受け入れ、0を返すことで、価格が負であってはならないというルールを破っています。
プログラミングでは、特殊なケースに遭遇した場合でも一般的な原則や規則を無視して良いわけではありません。一時的な利便性や短期的な解決策のためにルールを破ってしまうと、長期的なコードの整合性や可読性を保つことが難しくなるためです。
正解について
ここまで正解のヒントをご紹介しましたが、いかがでしょうか? この問題はPythonZen & PEP 8 検定試験で出題されています。
自信がついたら、PythonZen & PEP 8 検定試験 で実際に試験を受けてみましょう。