Python 模擬試験

Python実践 模擬試験 第5回 問28・10章 汎用OS・ランタイムサービス(argparse)

不正な引数の終了コード

次のコードを実行したときの出力として、正しいものを1つ選べ。

import argparse, io, contextlib
p = argparse.ArgumentParser()
p.add_argument("--m", choices=["a", "b"])
try:
    with contextlib.redirect_stderr(io.StringIO()):
        p.parse_args(["--m", "x"])
except SystemExit as e:
    print(e.code)
  1. A

    2

  2. B

    0

  3. C

    1

  4. D

    None

正解と解説を見る

正解:A

argparse は、引数が不正だと、使い方とエラーを表示して、SystemExit(2) で終了する。choices で、許す値を制限できる。

順実行する行実行後の変数
1`import argparse, io, contextlib`—
2`p = argparse.ArgumentParser()`—
3`p.add_argument("--m", choices=["a", "b"])`—
4`try:`—
5`with contextlib.redirect_stderr(io.StringIO()…`—
6`p.parse_args(["--m", "x"])`—
7`with contextlib.redirect_stderr(io.StringIO()…`—
8`except SystemExit as e:`—
9`print(e.code)`—
分岐`except SystemExit as e:`実行される
結果実際の出力2

学習のポイント:-h のヘルプは、終了コード 0。

この問題を演習で解く →

問題一覧へ

このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。