PRIME STUDY 第2回 Python 3 基礎 模擬試験 解いてみた

第2回 Python 3 基礎 模擬試験
スコアは 75 点 / 100点満点です。

# 間違えた問題
**1.Pythonの特徴に関する次の記述のうち、誤っているものはどれか。**

**不正解：**
PythonはWindows、MacOS、Linuxなど多くの環境で動作する、拡張可能なフリーのオープンソースソフトウェアである。
　**→Pythonの特徴と一致する。**

**正答：**
Pythonは柔軟な配列や集合、ディクショナリといった、非常に高水準のデータ型を組み込みで持つ。データ型の一般性が高いためPythonの対応可能な問題領域はAwkより広いが、Perlと比べると同程度である。
　**→Pythonの特徴として誤っている。**

:::note info
解説
柔軟な配列や集合、ディクショナリといった、非常に高水準のデータ型を組み込みで持つ。
**データ型の一般性が高いためPythonの対応可能な問題領域はAwkよりもずっと広く、Perlと比べてさえ広く、その上大抵のことは、他の言語と同程度以上にできる。**
:::

**2.Pythonインタープリタに関する次の記述のうち、誤っているものはどれか。**

**不正解：**
デフォルトの設定では、プライマリプロンプトの記号は「>>>」、セカンダリプロンプトの記号は「…」である。
　**→Pythonの特徴と一致する。**

**正答：**
インタープリタがスクリプト名（スクリプトのファイル名）と続く引数群を知らされると、これらは文字列のリストとなる。import listitems を実行することで、このリストにアクセスできる。
　**→Pythonの特徴として誤っている。**

:::note info
解説
インタープリタがスクリプト名（スクリプトのファイル名）と続く引数群を知らされると、これらは文字列のリストとなりsysモジュールの変数argvに割り当てられる。
import sysを実行することで、このリストにアクセスできる。
:::

**10.次の結果を得たい場合、コード【A】【B】に入る組み合わせとして適切なものはどれか。なお【A】は★aの行と、【B】は★bの行と同じ数の空白でインデントされている。**
```ruby:[ 実行結果 ]
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
```
```
[ コード ]
for n in range(2, 10):
    for x in range(2 ,n):  ★b
        if n % x == 0: 
            print(n, 'equals', x, '*', n//x)  ★a
            【A】
    【B】 
        print(n,'is a prime number')
```

**不正解：**
【A】break: 【B】 else

**正答：**
【A】break 【B】 else:

:::note info
解説
if 条件式:
elif 条件式:
else:
**「:」を忘れないように！！**
:::

**16.次のコード1行目の【A】【B】に入る組み合わせとして正しいものはどれか。**
```ruby:[ コード ]
def shop(name,【A】, 【B】):
    print("flowershop:", name)
    keys = sorted(argsX.keys())
    for kw in keys:
        print(kw, ":", argsX[kw])
    for Y in argsY:
        print(Y)
        
shop("Iris","Open: 9:30 am","Close: 10:30 pm","Monday and holidays are closed.",bouquet="Sunflower",plants="Pachira",dried="Rose")
```

**不正解：**
【A】argsX 【B】argsY

**正答：**
【A】*argsY 【B】**argsX

:::note info
解説
引数を
*
で渡すのがリスト
**
で渡すのが辞書型

:::

:::note warn
それぞれ実行
【A】argsX 【B】argsY　で実行した場合
Traceback (most recent call last):
  File "Main.py", line 11, in <module>
    shop("Iris","Open: 9:30 am","Close: 10:30 pm","Monday and holidays are closed.",bouquet="Sunflower",plants="Pachira",dried="Rose")
TypeError: shop() got an unexpected keyword argument 'bouquet'
**→TypeErrorのため、想定外の間違ったキーワードを入力しているようです**

【A】*argsY 【B】**argsX　で実行した場合
flowershop: Iris
bouquet : Sunflower
dried : Rose
plants : Pachira
Open: 9:30 am
Close: 10:30 pm
Monday and holidays are closed.
:::

**25.モジュールに関する次の記述のうち、誤っているものはどれか。**
**不正解：**
Pythonはソースファイルの最終更新日時をコンパイル済みのバージョンと比較し、再コンパイルが必要か判断する。これは完全に自動的に行われる。
　**→Pythonの特徴と一致する。** 

**正答：**
sys.pathが初期化されている場所は、入力スクリプトのあるディレクトリ、PYTHONPATHであり、インストールごとのデフォルトは含まれない。
　**→Pythonの特徴として誤っている。**

 :::note info
解説
sys.pathが初期化されている場所は、
・入力スクリプトのあるディレクトリ（ファイル名が指定されていないときはカレントディレクトリ）
・PYTHONPATH（ディレクトリ名のリスト。構文はシェル変数PATHと同じ）
・インストールごとのデフォルト
:::

**26.モジュールが定義している名前を対話モードで確認したい。次のコードの２行目【A】に入るものとして正しいものはどれか。**
```
import sys
【A】
```
**不正解：**
dir(mod)

**正答：**
dir(sys)

**30.次のコードを実行した場合には適切な方法で、あるクリーンアップがなされる。具体的にはどのような処理がなされているか。**

```ruby:
with open("file.txt") as f:
    for line in f:
        print(line, end="")
```
**不正解：**
file.close()

**正答：**
f.close()

**31.次の実行結果を得たい場合、コードの【A】【B】【C】に入る組み合わせとして適切なものはどれか。**
```
[ 実行結果 ]
David is a
strategic
AI

[コード]
class wexal(Exception):
    pass

name = 'David' 

def func(name: int):
    try:
        if name != 0:
            raise_his_character(name)
    except wexal:
        print('【A】')
        raise Exception
def raise_his_character(a):
    print(a, '【B】')
    raise wexal
    print('【C】')

try:
    func(name)
except Exception:
    print('【D】')
```
**正答：**
【A】strategic　【B】is a　【C】naughty boy　【D】AI

:::note info
解説
1.func関数にnameを引数として与え実行

2.if name != 0は真になるのでif文内の処理が実行
　raise_his_characterの引数にnameを与えて実行される
　print(a, '【B】')は「David is a」と出力される

3.raiseは例外を発生させる構文なので、ここでwexal例外が発生
　(※wexalは最初に新しい例外として追加されている)

4.ここでwexal例外を拾ったのでraise_his_character関数は終了し、func関数のexcept wexal:ブロックの処理が実行される
　print('【A】')はstrategicと出力されます
　(※実行途中に例外が発生したのでprint('【C】')は実行されない)

5. またもやraiseで例外が発生する
　最初のtry文がこれを拾い、except Exception:ブロックの処理が実行される
　print('【D】')はAIと出力される
:::

**35.次の正規表現を用いたコードの【A】の部分に入れたときエラーとなるものはどれか。**
```
import re
prog = re.compile('(K|S)u(r|s)(a|o)nf?(a|o)(o|m)?g?i?(saya)?', re.IGNORECASE)
【A】
print(ret[0])
```
**正答：**
ret = prog.search('kurofune')

:::note info
解説
re.IGNORECASE フラグを設定すると、パターンの中で記述したアルファベットの大文字と小文字を区別しなくなります。
またパターンに直接記述する場合は (?i) を使用します。
:::


**39.仮想環境とパッケージに関する次の記述のうち誤っているものはどれか。**
**不正解：**
pip install --upgradeとすることで、当該パッケージを最新バージョンにアップグレードすることができる。
 **→正しい**

**正答：**
「pip list パッケージ名」で、ある特定のパッケージの詳細情報が表示される。
　**→誤り**

:::note info
解説
「**pip show パッケージ名**」で、ある特定のパッケージの詳細情報が表示される。
「pip list」はその仮想環境にインストールされたすべてのパッケージを表示する。 
:::