PythonZen & PEP 8 検定試験D問題 PythonZen & PEP 8 検定試験D問題 へようこそ。 以下の各項目を入力後、「次へ」をクリックして模擬試験を開始してください。 ※あらかじめ利用規約をご確認ください(プライム・ストラテジーから採用やイベントの情報など届くことがあります)。 ※結果の詳細は入力いただいたメールアドレス宛てにのみお送りします。必ず確認可能なメールアドレスを入力してください。 お名前 メールアドレス(結果の詳細をお送りします) 試験ID 1. PEP 8に即していないインデントの使い方をしているコードを、次の選択肢の中から選びなさい。 引数が一行で収まらない場合は、第一引数の開始位置に揃える。 foo = long_function_name(var_one, var_two, var_three, var_four) 引数が一行で収まらない場合は、二行目から始めてインデントをつける。 foo = long_function_name( var_one, var_two, var_three, var_four) 引数が一行で収まらない場合は、二行目からインデントをつける。 foo = long_function_name(var_one, var_two, var_three, var_four) def文の場合は、引数と関数処理を区別させるために、引数のインデントをさらに追加する。 def long_function_name( var_one, var_two, var_three, var_four): print(var_one) 2. PEP 8ではコード一行あたりの文字数を何文字に制限するか、次の選択肢の中から選びなさい。 半角80文字 半角79文字 全角80文字 全角79文字 3. PEP 8でコーディングに利用する文字エンコーディングを、次の選択肢の中から選びなさい。 ASCII UTF-8 EUC UTF-16 4. PEP 8 で推奨される import 文の順序の説明で正しいものを、次の選択肢の中から選びなさい。 標準ライブラリ サードパーティに関連するもの ローカルな アプリケーション/ライブラリ に特有のもの ローカルな アプリケーション/ライブラリ に特有のもの サードパーティに関連するもの 標準ライブラリ 標準ライブラリ ローカルな アプリケーション/ライブラリ に特有のもの サードパーティに関連するもの サードパーティに関連するもの 標準ライブラリ ローカルな アプリケーション/ライブラリ に特有のもの 5. PEP 8のimport文の書き方で間違っているものを、次の選択肢の中から選びなさい。 from subprocess import Popen, PIPE import osimport sys from mypkg.sibling import example import sys, os 6. PEP 8での空白の扱い方で間違っているものを、次の選択肢の中から選びなさい。 if x == 4: print(x, y) dct['key'] = lst[index] c = (a+b) * (a-b) x = 1y = 2long_variable = 3 7. PEP 8で非推奨とされる変数名(小文字の英字)を、次の選択肢の中から選びなさい。 i l o v 8. PEP 8での二項演算子を含んだコードの改行方法が正しいものを、次の選択肢の中から選びなさい。 income = (gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction - student_loan_interest) income = (gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction - student_loan_interest) income = (gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction - student_loan_interest) income = (gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction - student_loan_interest) 9. PEP8で推奨されるコメントの説明について、正しいものを次の選択肢の中から選びなさい。 コメントの種類には、ブロックコメント、インラインコメント、docstring(ドキュメント文字列)がある。 コードを変更したときにコメントとコードの意味が矛盾してしまうのを避けるため、なるべくコメントは書かないようにする。 分かりやすくするために、コメントは文章よりも単語で書くようにする。 Pythonは世界中の人が使用しているため、コメントは必ず英語で書く。 10. PEP8の継承の説明について、間違っているものを次の選択肢の中から選びなさい。 クラスの属性(メソッドやインスタンス変数など)を公開するかどうか迷った時は、非公開にしておく。 公開している属性については後方互換性を壊さないように変更されるべきだが、非公開の属性についてはその限りではない。 公開している属性が予約語と衝突してしまう場合は、公開属性の先頭にアンダースコアをつける。 Pythonにはアクセス修飾子がないため、サブクラスで使用して欲しくない属性の先頭にはアンダースコアを2つつける。 11. PEP 8の例外の説明について、間違っているものを次の選択肢の中から選びなさい。 例外はクラスであるべき。 例外がエラーを表す場合、名前の最後に Error をつける。 例外の取りこぼしが極力少なくなるように、可能な限り except: で例外をキャッチする。 例外を発生させる場合は、raise ValueError, 'message' ではなく raise ValueError('message') を使う。 12. PEP 8が推奨するreturnの書き方について、正しいものを次の選択肢の中から選びなさい。 関数の中に到達可能な return が複数箇所ある場合、すべての return は同じ型を返すようにする。 関数の中に到達可能な return が複数箇所ある場合、値を何も返さない return None は省略できる。 try...finally の組み合わせの中で、finally の中に return を書いても良い。 f = lambda x: 2*x のようなラムダ式ではなく、def f(x): return 2*x のように return 含むdef式を使う。 13. PEP 8が推奨するカッコの閉じ方とカンマの使い方について、間違っているものを選択肢の中から選びなさい。 fruits = [ 'apple', 'banana', 'cherry',] FRUITS = ['apple', 'banana', 'cherry'] FRUITS = ('apple', 'banana', 'cherry',) FRUITS = ('apple',) 14. PEP 8が推奨する変数アノテーションの書き方について、正しいものを選択肢の中から選びなさい。 code:int code : int code:int=0 code: int = 0 15. Zen of Pythonの全文を表示できるコマンドで正しいもの、次の選択肢の中から選びなさい。 import zen import it import python import this 16. 格言「Complex is better than complicated.」に関する説明について、間違っているものを次の選択肢の中から選びなさい。 スパゲッティコードになってしまっても仕方がない場合がある。 難しい処理を書く場合は、コードの行数が増えてしまうこともある。 難しいアルゴリズムを書く場合でも、読みやすいコードを目指すべきである。 条件分岐が多いという理由だけでは、コードがcomplexであるとは限らない。 17. Zen of Pythonの「特殊なケース(special cases)」に関する格言について、___(?)___ に当てはまるものを次の選択肢の中から選びなさい。 Special cases aren't special enough to ___(?)___ the rules. follow break have keep 18. 格言「In the face of ambiguity, refuse the temptation to guess.」に準拠していないコードを、次の選択肢の中から選びなさい。 a = Trueb = Trueif not a and b: print('Hello World')else: print('Bye World') a = Trueb = Trueif a and not b: print('Hello World')else: print('Bye World') a = Trueb = Trueif (not a) and b: print('Hello World')else: print('Bye World') a = Trueb = Trueif not (a and b): print('Hello World')else: print('Bye World') 19. 格言「Now is better than never.」と「Although never is often better than *right* now.」に関する説明について、間違っているものを次の選択肢の中から選びなさい。 バグを放置せずに今すぐ修正しよう。 無限ループは終わらせるべき。 ファイルを open() した後に例外が飛ぶ場合は、ファイルを close() しなくても良い。 YAGNI(You ain't gonna need it.)。つまり、機能は実際に必要となるまでは追加しない方がよい。 20. 格言「Namespaces are one honking great idea – let’s do more of those!」を表している以下のコードの実行結果として、正しいものを次の選択肢の中から選びなさい。 a = 2d_a1 = id(a)a += 1id_a2 = id(a)print(id_a1 == id_a2)print(id_a2 == id(3)) FalseFalse FalseTrue TrueFalse TrueTrue 試験は終了です。「回答を送信」ボタンを押下してください。 Time's up