動画

課題

課題(チャプター9:ライブラリ)

【基本問題】ライブラリの種類と考え方(5問)

問題1

変数kinds["標準ライブラリ", "外部ライブラリ", "自作ライブラリ"]を代入し、そのリストをprintで表示するプログラムを作成してください。

期待される出力:

['標準ライブラリ', '外部ライブラリ', '自作ライブラリ']

ヒント: 台本にある3分類をリストで表します。

問題2

import mathを書いたうえで、円周率を小数第2位で四捨五入してprintしてください(round(math.pi, 2))。

期待される出力:

3.14

ヒント: mathは標準ライブラリのモジュールです。

問題3

import mathとして、print(math.sqrt(25))を実行するプログラムを作成してください。

期待される出力:

5.0

ヒント: 平方根は浮動小数点数で返ります。

問題4

次の文は「読みやすさ」のメリットに関係します。print(len("random.randint"))だけを書いたプログラムを作成し、文字数を表示してください。

期待される出力:

14

ヒント: メソッド名の文字列の長さを数えます。

問題5

import sysとして、print(type(sys.version).__name__)を実行するプログラムを作成してください。

期待される出力:

str

ヒント: sys.versionはバージョン情報の文字列です。

【基本問題】import とドット記法(8問)

問題6

import randomとして、random.seed(0)のあとprint(random.randint(1, 6))を実行するプログラムを作成してください。

期待される出力:

4

ヒント: randintは両端を含みます。seedで結果を固定しています。

問題7

import randomとして、random.seed(42)のあとprint(random.randint(1, 6))を実行するプログラムを作成してください。

期待される出力:

6

ヒント: 台本のサイコロ例に近い形です。

問題8

import randomとして、random.seed(0)のあとprint(random.randint(10, 10))を実行するプログラムを作成してください。

期待される出力:

10

ヒント: 上下限が同じならその整数だけ返ります。

問題9

import randomとして、random.seed(1)のあとprint(random.choice(["A", "B", "C"]))を実行するプログラムを作成してください。

期待される出力:

A

ヒント: choiceはリストから1要素を選びます。

問題10

import randomとして、random.seed(1)のあとprint(random.randrange(0, 3))を実行するプログラムを作成してください。

期待される出力:

0

ヒント: randrangeの終端は含まれません。

問題11

from math import pow as pとして、print(int(p(2, 3)))を実行するプログラムを作成してください。

期待される出力:

8

ヒント: from ... import ...で名前を取り込めます。

問題12

import mathとして、print(math.ceil(4.1))を実行するプログラムを作成してください。

期待される出力:

5

ヒント: 天井関数は以上の最小の整数です。

問題13

import mathとして、print(math.floor(-2.1))を実行するプログラムを作成してください。

期待される出力:

-3

ヒント: 床関数は以下の最大の整数です。

【基本問題】random モジュール(11問)

問題14

import randomとして、random.seed(2)のあとprint(random.randint(100, 200))を実行するプログラムを作成してください。

期待される出力:

107

ヒント: seed固定で再現できる乱数にします。

問題15

import randomとして、random.seed(3)のあとprint(random.randint(5, 5))を実行するプログラムを作成してください。

期待される出力:

5

ヒント: 範囲が1点のときの確認です。

問題16

import randomとして、random.seed(10)のあとprint(round(random.uniform(1, 2), 2))を実行するプログラムを作成してください。

期待される出力:

1.13

ヒント: 実数乱数はroundで表示を揃えます。

問題17

import randomとして、random.seed(0)のあとprint(round(random.random(), 5))を実行するプログラムを作成してください。

期待される出力:

0.84442

ヒント: 0以上1未満の乱数です。

問題18

import randomとして、random.seed(0)のあとx = random.randint(1, 3); y = random.randint(1, 3); print(x + y)を実行するプログラムを作成してください。

期待される出力:

6

ヒント: 2回呼ぶとseedの消費順に従います。

問題19

import randomとして、lst = [1, 2, 3, 4, 5]; random.seed(0); random.shuffle(lst); print(lst)を実行するプログラムを作成してください。

期待される出力:

[3, 2, 1, 5, 4]

ヒント: 講義用PCのPython 3系で確認した並びです。

問題20

import randomとして、random.seed(0)のあとprint(sorted(random.sample(range(1, 10), 3)))を実行するプログラムを作成してください。

期待される出力:

[1, 7, 9]

ヒント: sampleは重複なしで複数個選びます。

問題21

import randomとして、random.seed(1)のあとprint(random.getrandbits(8))を実行するプログラムを作成してください。

期待される出力:

34

ヒント: ビット幅を指定した乱数です。

問題22

import randomとして、random.seed(4)のあとprint(random.randint(20, 30))を実行するプログラムを作成してください。

期待される出力:

23

ヒント: 範囲指定のrandintの練習です。

問題23

import randomとして、random.seed(0)のあとprint(random.choices([10, 20], k=3))を実行するプログラムを作成してください。

期待される出力:

[20, 20, 10]

ヒント: choicesは重複ありで複数回選べます。

問題24

import randomとして、random.seed(5)のあとprint(random.randint(1, 100))を実行するプログラムを作成してください。

期待される出力:

80

ヒント: 広い範囲の整数乱数です。

【基本問題】time モジュール(11問)

問題25

import timeとして、t = time.gmtime(0)のあとprint(t.tm_year)を実行するプログラムを作成してください。

期待される出力:

1970

ヒント: UTCのエポック(1970-01-01 00:00:00)です。

問題26

import timeとして、print(time.gmtime(0).tm_mon)を実行するプログラムを作成してください。

期待される出力:

1

ヒント: 月は1〜12です。

問題27

import timeとして、print(time.gmtime(0).tm_mday)を実行するプログラムを作成してください。

期待される出力:

1

ヒント: 日にちです。

問題28

import timeとして、print(time.gmtime(0).tm_wday)を実行するプログラムを作成してください。

期待される出力:

3

ヒント: 曜日(月曜=0)です。1970-01-01は木曜。

問題29

import timeとして、print(type(time.gmtime(0)).__name__)を実行するプログラムを作成してください。

期待される出力:

struct_time

ヒント: 台本にある通り、時刻はタプル的な構造体で返ることがあります。

問題30

import timeとして、print(time.gmtime(3600).tm_hour)を実行するプログラムを作成してください。

期待される出力:

1

ヒント: エポックから3600秒後のUTCの時です。

問題31

import timeとして、print(time.strftime('%Y-%m-%d', time.gmtime(0)))を実行するプログラムを作成してください。

期待される出力:

1970-01-01

ヒント: UTC基準で日付文字列を作れます。

問題32

import timeとして、print(time.strftime('%H:%M:%S', time.gmtime(3661)))を実行するプログラムを作成してください。

期待される出力:

01:01:01

ヒント: 秒から時分秒へ整形します。

問題33

import timeとして、print(time.gmtime(86400).tm_mday)を実行するプログラムを作成してください。

期待される出力:

2

ヒント: エポックから1日後は2日です。

問題34

import timeとして、print(time.gmtime(86400).tm_yday)を実行するプログラムを作成してください。

期待される出力:

2

ヒント: 年内の通日です。

問題35

import timeとして、print(time.monotonic() >= 0)を実行するプログラムを作成してください。

期待される出力:

True

ヒント: 単調増加の経過時間(秒)で、負にはなりません。

【基本問題】import … as …(7問)

問題36

import math as mとして、print(m.pow(3, 2))を実行するプログラムを作成してください。

期待される出力:

9.0

ヒント: 別名mmathを呼びます。

問題37

import random as rとして、r.seed(0)のあとprint(r.randint(1, 1))を実行するプログラムを作成してください。

期待される出力:

1

ヒント: 台本のimport time as tと同じ別名の考え方です。

問題38

import time as tとして、print(t.gmtime(0).tm_year)を実行するプログラムを作成してください。

期待される出力:

1970

ヒント: 長い名前を短くして読みやすくできます。

問題39

import math as mとして、print(m.factorial(4))を実行するプログラムを作成してください。

期待される出力:

24

ヒント: 階乗は標準のmathにあります。

問題40

import math as mとして、print(m.gcd(48, 18))を実行するプログラムを作成してください。

期待される出力:

6

ヒント: 最大公約数です。

問題41

import random as rとして、r.seed(6)のあとprint(r.randint(0, 9))を実行するプログラムを作成してください。

期待される出力:

9

ヒント: 別名でもseedは同じように使えます。

問題42

import math as mとして、print(m.trunc(-3.7))を実行するプログラムを作成してください。

期待される出力:

-3

ヒント: 0に近い方へ切り捨てます。

【応用・間違い探し】注意点・pip・調べ方(8問)

問題43

以下のコードはモジュール名のスペルミスがあります。修正して、random.seed(0)のあと1から3の乱数を1つprintしてください。

import randon
randon.seed(0)
print(randon.randint(1, 3))

期待される出力:

2

ヒント: 正しくはimport randomです。ModuleNotFoundErrorの原因になります。

問題44

台本にあるとおり、外部ライブラリ導入の一例として、コマンド文字列(引用符なし)をそのまま1行printしてください。python -m pip install requestsを表示したいです。

期待される出力:

python -m pip install requests

ヒント: 講義で案内されることが多い、Pythonに紐づけてpipを実行する形です。

問題45

仮想環境の名前として台本で触れたvenvを、そのまま1行printしてください。

期待される出力:

venv

ヒント: プロジェクトごとに依存関係を分けられます。

問題46

import mathとして、標準モジュールが持つ名前__name__print(math.__name__)で表示するプログラムを作成してください。

期待される出力:

math

ヒント: 台本の「名前衝突」と対比して、取り込んだモジュールの正体を確認するイメージです。

問題47

import mathとして、平方根と二乗が2に十分近いかmath.iscloseで調べ、print(math.isclose(math.sqrt(2) * math.sqrt(2), 2.0))を実行するプログラムを作成してください。

期待される出力:

True

ヒント: 浮動小数点の比較にはiscloseが便利です。

問題48

import mathとして、ドキュメント調査の練習としてprint(math.log(100, 10))を実行するプログラムを作成してください。

期待される出力:

2.0

ヒント: 底10の対数で100は2乗です。

問題49

以下のコードはimport mathの直後の行に、誤ったインデントがあります。正しく直して、3.0と表示されるようにしてください。

import math
 print(math.sqrt(9))

期待される出力:

3.0

ヒント: importの次の行はブロックではないので、余計なインデントを消します。

問題50

import mathとして、モジュールが公開している名前の数が50個より多いかどうかをprint(len(dir(math)) > 50)で調べるプログラムを作成してください。

期待される出力:

True

ヒント: dirは台本情報整理にある調査手段の一つです。

お気軽に無料相談を

オンラインで気軽にご相談ができます。入校お申込みもこちらから。