当コラムでは、PythonZen & PEP 8 検定試験(こちらでオンライン受験できます)で出題されている問題の解説を行なっています。当コラムシリーズを読んで自信がついたら、ぜひ試験に挑戦してみてくださいね。
今回のコラムで解説する試験問題はこちらです。
問題
Pythonは少ない行数でアルゴリズムの美しさを表現できるが、そのことを表現した格言で正しいものを、次の選択肢の中から選びなさい。
- Beautiful is better than ugly.
- Beauty is in the eye of the beholder.
- Beauty is all about algorithms.
- Python is beauty.
解答のヒント
PEP 20 – The Zen of Python が今回の問題の出題範囲になっています。
The Zen of Pythonは、Pythonコードの設計哲学を簡潔に表現した19の格言集です。Pythonコードでは読みやすさや簡潔さが大事であるといったことが助言されています。PEP 20は2004年にTim Petersによって作成され、Pythonコミュニティで広く受け入れられています。
Pythonのインタプリタにimport this
と入力すると、Zen of Pythonの全文を読むことができます。
1行目には次のフレーズが書かれています。
Beautiful is better than ugly.
美しい(beautiful)コードと醜い(ugly)コードの正確な定義はありませんが、概ね以下のような理解をする人が多いでしょう。
変数名や関数名に不可解な名前が付けられていると、醜い。
def fn(a, q):
k = a + q
return k
変数名や関数名から役割が明確に分かると、美しい。
def sum_two_numbers(num1, num2):
result = num1 + num2
return result
一貫性がないと、醜い。
def multiply_NUMBERS(a, BB):
return a * BB
Result = multiply_NUMBERS(5, 3)
print(Result)
一貫性があると、美しい。
def multiply_numbers(a, b):
return a * b
result = multiply_numbers(5, 3)
print(result)
簡単な処理を複雑に書くと、醜い。
# 1から10までの数の中で偶数だけのリストを作る。
even_numbers = []
for x in range(1, 11):
if x % 2 == 0:
even_numbers.append(x)
print(even_numbers)
簡単な処理をシンプルに書くと、美しい。
# 1から10までの数の中で偶数だけのリストを作る。
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers)
正解について
ここまで正解のヒントをご紹介しましたが、いかがでしょうか? この問題はPythonZen & PEP 8 検定試験で出題されています。
自信がついたら、PythonZen & PEP 8 検定試験 で実際に試験を受けてみましょう。