Python3エンジニア認定基礎試験向けかもしれない問題集

AIを使って問題を作成しています。


### Prompt:
`Python3エンジニア認定基礎試験に出てきそうな問題を作ってください。`


### 問題1 (ジェネレーター)
次のコードの出力は何ですか？

```python: Python
def generator():
    for i in range(3):
        yield i

g = generator()
print(next(g))
print(next(g))
```

1. `0 1`
1. `0 0`
1. `1 2`
1. `0 2`

<details> <summary>解説</summary>

正解：1. `0 1` yield を使ったジェネレーターは、次の要素を返します。next を呼び出すたびに次の値が返されます。

</details>

### 問題2 (リストの内包表記と条件)
次のコードの出力は何ですか？

```python: Python
lst = [x**2 for x in range(6) if x % 2 == 0]
print(lst)
```

1. `[0, 4, 16, 36]`
1. `[0, 1, 4, 9, 16, 25, 36]`
1. `[0, 4, 16]`
1. `[0, 2, 4, 6, 8, 10]`

<details> <summary>解説</summary>

正解：3. `[0, 4, 16]` リスト内包表記は、0から5の範囲内の偶数の二乗を生成します。

</details>

### 問題3 (デコレータ)
次のコードの出力は何ですか？

```python: Python
def decorator(func):
    def wrapper():
        print("Before function call")
        func()
        print("After function call")
    return wrapper

@decorator
def say_hello():
    print("Hello!")

say_hello()
```

1. `Before function call Hello! After function call`
1. `Hello! Before function call After function call`
1. `Before function call After function call`
1. `Error`

<details> <summary>解説</summary>

正解：1. `Before function call Hello! After function call` デコレータは関数の前後に処理を追加します。

</details>

### 問題4 (関数のネスト)
次のコードの出力は何ですか？

```python: Python
def outer(x):
    def inner(y):
        return x + y
    return inner

f = outer(10)
result = f(5)
print(result)
```

1. `5`
1. `10`
1. `15`
1. `Error`

<details> <summary>解説</summary>

正解：3. `15` 内部関数 inner は外部関数 outer の引数 x にアクセスできます。

</details>

### 問題5 (例外処理とカスタム例外)
次のコードの出力は何ですか？

```python: Python
class MyException(Exception):
    pass

try:
    raise MyException("An error occurred")
except MyException as e:
    print(e)
```

1. `An error occurred`
1. `MyException`
1. `Exception`
1. `Error`

<details> <summary>解説</summary>

正解：1. `An error occurred` カスタム例外 MyException が発生し、そのメッセージが表示されます。

</details>

### 問題6 (ジェネレーターの理解)
次のコードの出力は何ですか？

```python: Python
def countdown(n):
    while n > 0:
        yield n
        n -= 1

for num in countdown(3):
    print(num, end=' ')
```

1. `3 2 1`
1. `1 2 3`
1. `3 2`
1. `2 1`

<details> <summary>解説</summary>

正解：1. `3 2 1` ジェネレーター countdown はカウントダウンの各値を生成します。

</details>

### 問題7 (ラムダ関数とソート)
次のコードの出力は何ですか？

```python: Python
lst = [(1, 'one'), (2, 'two'), (3, 'three')]
lst.sort(key=lambda x: x[1])
print(lst)
```

1. `[(1, 'one'), (2, 'two'), (3, 'three')]`
1. `[(3, 'three'), (1, 'one'), (2, 'two')]`
1. `[(1, 'one'), (3, 'three'), (2, 'two')]`
1. `[(2, 'two'), (1, 'one'), (3, 'three')]`

<details> <summary>解説</summary>

正解：3. `[(1, 'one'), (3, 'three'), (2, 'two')]` sort メソッドはラムダ関数を使ってタプルの第二要素でソートします。

</details>

### 問題8 (クラスと静的メソッド)
次のコードの出力は何ですか？

```python: Python
class MyClass:
    @staticmethod
    def greet():
        return "Hello, World!"

print(MyClass.greet())
```

1. `Hello, World!`
1. `None`
1. `Error`
1. `Hello`

<details> <summary>解説</summary>

正解：1. `Hello, World!` 静的メソッド greet はクラスから直接呼び出せます。

</details>

### 問題9 (ファイル操作と例外処理)
次のコードを実行した場合、存在しないファイルを開こうとすると、どの例外が発生しますか？

```python: Python
try:
    with open("non_existent_file.txt", "r") as f:
        content = f.read()
except Exception as e:
    print(type(e))
```

1. `<class 'FileNotFoundError'>`
1. `<class 'ValueError'>`
1. `<class 'TypeError'>`
1. `<class 'KeyError'>`

<details> <summary>解説</summary>

正解：1. `<class 'FileNotFoundError'>` 存在しないファイルを開こうとすると FileNotFoundError が発生します。

</details>

### 問題10 (クラスとプロパティ)
次のコードの出力は何ですか？

```python: Python
class MyClass:
    def __init__(self, value):
        self._value = value
    
    @property
    def value(self):
        return self._value

obj = MyClass(10)
print(obj.value)
```

1. `10`
1. `None`
1. `Error`
1. `value`

<details> <summary>解説</summary>

正解：1. `10` プロパティ value は _value 属性の値を返します。

</details>