023_Pythonエンジニア認定基礎試験11-6~9

目次

第11章_標準ライブラリ

今回の項目では、標準ライブラリについて出題されます。
本試験の主教材である「Python3エンジニア認定基礎試験問題集」では第11章(P148~P150)の4問の内容です。

確認問題 1

以下のコードを実行した結果が「2025-05-20」と表示されるとき、空欄➀にあたはまるものとして最も適切なものを選択してください。

from datetime import datetime
dt = datetime(2025, 5, 20)
print(➀)

1. dt.strftime(“%Y-%m-%d”)

2. dt.strftime(“2000-%5-%20”)

3. dt.strftime(“{year}-{month}-{day}”)

4. dt.strftime(“{}-{}-{}”, de.year, dt.month, dt.day)

答えはコチラをクリック!

答え:1

  • dt.strftime(“%Y-%m-%d”)
    • この選択肢は、datetimeオブジェクトdtを「年-月-日」という形式でフォーマットする方法です。%Yは4桁の西暦年、%mは2桁の月、%dは2桁の日を表します。したがって、「2025-05-20」とフォーマットされます。
  • dt.strftime(“2000-%5-%20”)
    • これは文字列がそのまま適用されますので、フォーマットコードとして機能しません。そのため、指定の文字列「2000-%5-%20」がそのまま表示されます。結果として「2025-05-20」は表示されません。
  • dt.strftime(“{year}-{month}-{day}”)
    • この選択肢もフォーマットコードとして機能しない文字列です。「{year}-{month}-{day}」がそのまま表示され、期待する「2025-05-20」は得られません。
  • dt.strftime(“{}-{}-{}”, de.year, dt.month, dt.day)
    • この選択肢はstrftimeの正しい使い方ではありません。str.format()を意図しているかもしれませんが、strftimeはこの形式をサポートしていないため、正しく動作しません。

確認問題 2

以下のコードを実行した時の結果として正しいものを選択してください。

from datetime import date

date1 = date(2001, 8, 3)
date2 = date(2002, 9, 4)
diff = date2 - date1
print(diff.days)

1. -1

2. 1

3. 32

4. 397

答えはコチラをクリック!

答え:2

from datetime import date: datetimeモジュールからdateクラスをインポートしています。このクラスを使って日付オブジェクトを作成できます。

date1 = date(2001, 8, 3): 2001年8月3日を表すdateオブジェクトを作成します。

date2 = date(2002, 9, 4): 2002年9月4日を表すdateオブジェクトを作成します。

diff = date2 – date1: 2つの日付date2とdate1の差を計算します。この差はtimedeltaオブジェクトで返されます。

print(diff.days): timedeltaオブジェクトのdays属性を使って、日付の差を日数として出力します。

計算:

  • 2001年8月3日から2002年9月4日までの日数を計算します。
  • まず、2001年8月3日から2001年12月31日までの日数は150日です。
  • 次に、2002年1月1日から2002年9月4日までの日数は247日です。
  • 合計すると、150日 + 247日 = 397日です。

したがって、このコードを実行した結果として正しい選択肢は4. 397です。

確認問題 3

以下のコードを実行した結果として正しいものを選択してください

import unittest

class test(unittest.TestCase):
    def test_it(self):
        actual = "dog"
        expected = "cat"
        self.assertEqual(actual, expected)

if __name__ == '__main__':
    unittest.main()

1. OK

2. AssertionError: ‘dog’ != ‘cat’

3. TypeError: Cannot compare ‘int’ and ‘str’ objects

4. RuntimeError: Unexpected error occurred during the test

答えはコチラをクリック!

答え:2

  • OK
    • この選択肢は、すべてのテストが成功した場合に表示されるメッセージです。しかし、actual と expected は異なっているため、テストは成功しません。この選択肢は不正解です。
  • AssertionError: ‘dog’ != ‘cat’
    • self.assertEqual(actual, expected) のテストが失敗した場合に表示されるエラーメッセージです。actual が ‘dog’ で、expected が ‘cat’ であり、それらが等しくないため、AssertionError が発生します。この選択肢が正しいです。
  • TypeError: Cannot compare ‘int’ and ‘str’ objects
    • これは型の不一致の際に発生するエラーメッセージですが、今回のテストではどちらも文字列型であり、型の不一致は発生していないため、この選択肢は不正解です。
  • RuntimeError: Unexpected error occurred during the test
    • 予期しないランタイムエラーのメッセージですが、今回のコードにおいてそのようなエラーは発生しません。この選択肢は不正解です。

確認問題 4

以下のコードを実行した結果として正しいものを選択してください。

from pprint import pprint

data = ['Apple', 'Banana', 'Cherry', 'Date']

pprint(data, width=20)

1.

[‘Apple’, ‘Banana’, ‘Cherry’, ‘Date’]

2.

[‘Apple’,
‘Banana’,
‘Cherry’,
‘Date’]

3.

[‘Apple’, ‘Banana’,
‘Cherry’, ‘Date’]

4.

[‘Apple’, ‘Banana’, ‘Cherry’,
‘Date’]

答えはコチラをクリック!

答え:2

pprint モジュールの pprint 関数は、Python のオブジェクトを整形して出力するためのものです。この場合、width パラメータが 20 に設定されています。width パラメータは、出力行の最大幅を指定します。リストの各要素が短いため、それぞれの要素が幅を超えていない場合、pprint は各要素を別々の行に出力することがあります。

次に各選択肢について説明します:

  • A) は pprint を使わず、print(data) を使った場合の出力に似ていますが、整形はされていません。
  • B) は正しい選択肢で、指定された width に基づいてリストの各要素が新しい行に出力されています。
  • C) は、リストの一部の要素が横並びになっている形ですが、幅の制限が考慮されていません。
  • D) は似ていますが ‘Cherry’ が新しい行に出力されるのは width 設定に対応していません。

したがって、pprint の幅設定を反映した正しい出力は B) になります。

次回は…

次回は「024_Pythonエンジニア認定基礎試験12-1~4」です。
pythonの仮想環境とサードパーティパッケージについて学びましょう!

参考資料一覧:Python3エンジニア認定[基礎試験]問題集
https://www.pythonic-exam.com
https://data-engineer-japan.com
https://mynavi-agent.jp
https://python-basic.com
https://www.tokai-bs.co.jp
https://freelance.techcareer.jp/articles/wp/skills/python/detail/550/
https://pythonzen-pep8-exam.jp/

目次