ExamApp 模擬試験アプリ Python3エンジニア認定試験 基礎・初級問題 解いてみた

こんにちは！WEBの問題集を解きました。
結果と間違えた問題の見直しをしていきます。

[模擬試験アプリ Python3エンジニア認定試験](https://python-basic.com/)

https://python-basic.com/

**基礎・初級問題**
| 開始日 | ステータス | 正解率 |
|:-----------|------------:|:------------:|
| 2024年01月12日13時10分 | 完了 | 72% |

資格の合格ラインは正解率 **70%** です。

以下は間違えた問題の見直しです。
## 見直し
```ruby:問題 11
# 次のコードを実行した結果として、正しいものはどれか。
for count in range(3):
    print(count)
```
```ruby:回答
0
1
2
```


```ruby:問題 18
# 次のコードを実行した結果として、正しいものはどれか。
num = [1, 2, 3, 4]
print(num.pop(2))
```
```ruby:回答
3
```

```ruby:問題 19
# 次のコードを実行した結果として、正しいものはどれか。
area = [x ** 2 for x in range(3)]
print(area)
```
```ruby:回答
[0, 1, 4]
```
```ruby:問題 24
# 演算子の優先度を高→低と並べたとき、正しいものはどれか。
# not → and → or → 比較演算子
# and → or → 比較演算子 not
# 比較演算子 → and → or → not
# 比較演算子 → not → and → or
```
```ruby:回答
# 比較演算子 → not → and → or
```
```ruby:問題 30
# 次のコードを実行した結果として、正しいものはどれか。
list = []

try:
    number = list[-1]
    print(number)
except ZeroDivisionError:
    print('ZeroDivisionError')
except IndexError:
    print('IndexError')
```
```ruby:回答
IndexError
```
```ruby:問題 32
# 次のコードを実行した結果として、正しいものはどれか。
class Greet():
    def say():
        print('Hello')

sample = Greet()

sample.say()
```
```ruby:回答
# エラーになる。
```
```ruby:解説
# 問題文のコードは「TypeError: Greet.say() takes 0 positional arguments but 1 was given」のエラーが表示されます。
# クラスにメソッドを定義する場合、メソッドの第一引数でインスタンス自身（問題文ではsample）を受け取る必要があります。
# そのため、以下のように二行目を「def say(self):」とすることで、sayメソッドが実行されて「Hello」が表示されます。

-------------------------------
class Greet():

    def say(self): 
    #【3】 selfでsampleを受け取る

        print('Hello')
        #【4】 print文を実行

sample = Greet()
#【1】 クラスをインスタンス化

sample.say()
#【2】 sayメソッドを実行

-------------------------------
# なお、メソッドの第一引数の名前は慣習で「self」を使います。

#（公式書籍 p.108）
```
```ruby:問題 33
# 次のコードを実行した結果として、正しいものはどれか。
class Item:
    pass

x = Item()
name = 'book'
print(x.name)
```
```ruby:回答
# エラーになる。
```
```ruby:解説
# 問題文のコードは、インスタンスと属性が紐づいていないため、「AttributeError: 'Item' object has no attribute 'name'」のエラーが表示されます。
# インスタンス化したオブジェクトにデータ属性を定義する場合は、「オブジェクト.データ属性名 = 値」と記述します。
# そのため、問題文の「name = 'book'」を、以下のように「x.name = 'book'」に変更すると、print文が実行されて「book」が表示されます。

-------------------------------
class Item:
    pass
    #【1】 Itemクラスを定義

x = Item()
#【2】 Itemクラスをインスタンス化

x.name = 'book'
#【3】 インスタンス（オブジェクト）に「name」のデータ属性を定義して、「book」の値を代入。

print(x.name)
#【4】 データ属性の値を表示

-------------------------------

#（公式書籍 p.104）
```
```ruby:問題 36
# ディレクトリの中のファイルをリストで取得する場合、次のコードの★★★に入るものはどれか。
import glob

title = glob.★★★('*.txt')
```
```ruby:回答
glob
```
```ruby:解説
#「glob.glob()」の最初のglobはモジュール名で、次のglobは関数名です。
# ファイルの一覧はos.listdirでも取得できますが、globは問題文のようにワイルドカード（*）が使えます。

#（公式書籍 p.120）
```
```ruby:問題 37
# 次のコードでプログラムを終了させる場合、★★★に入るものはどれか。
import sys

sys.★★★()
```
```ruby:回答
exit
```
```ruby:問題 38
# 次のライブラリのうち、Pythonの標準ライブラリではないものはどれか。
gzip
timeit
csv
openpyxl
```
```ruby:回答
openpyxl
```
```ruby:解説
# openpyxlはExcelファイルを扱うライブラリで、標準ではなく外部ライブラリとなります。
# 外部ライブラリはインストールが必要です。

#（公式書籍 p.125-126）
```
:::note info
Pythonの標準ライブラリ
gzip：gzipファイルの圧縮と展開を行うことができる。
timeit：コードの処理の実行時間を計測できる。
csv：csvファイルの読み込み、書き込みの処理を行うことができる。
:::

```ruby:問題 40
# MacOSのbashで仮想環境をアクティベートする際の記述として、正しいものはどれか。
# 仮想環境のディレクトリ名は「directory」とする。
```
```ruby:回答
source directory/bin/activate
```
:::note info
仮想環境について
仮想環境作成
　python -m venv [仮想環境名]

仮想環境のアクティベート
　Linux, Macの場合
　　. [仮想環境名]/bin/activate
　　　または
　　source [仮想環境名]/bin/activate

　Windowsの場合
　　.\[仮想環境名]\Scripts\activate
:::