【Python練習問題】関数の応用編

前回に引き続き、関数編です。
今回は特に初学者がつまづきやすいポイントにフォーカスを当てた内容です。


## 2.様々な引数

### Q.2-1:次のコードを実行した結果を答えなさい

```python
def concatenate(s1, s2="World!"):
    return f"{s1}  {s2}"

# 使用例
print(concatenate("Hello")) 

```

### Q.2-2:次のコードを実行した結果を答えなさい

```python
def concatenate(s1, s2="World!"):
    return f"{s1}  {s2}"

# 使用例
print(concatenate("Hello", "World!")) 

```

### Q.2-3:次のコードを実行した結果を答えなさい

```python
def concatenate(s1="Hello", s2="World!"):
    return f"{s1}  {s2}"

# 使用例
print(concatenate("Good Morning")) 

```

### Q.2-4:次のコードを実行した結果を答えなさい

```python
def append_if_even(num, list=[]):
    if num % 2 == 0:
        list.append(num)
    return list

# 使用例
print(append_if_even(2)) 
print(append_if_even(4)) 
print(append_if_even(6)) 

```

### Q.2-5:次のコードを実行した結果を答えなさい

```python
i = 5

def print_num(arg=i):
    print(arg)

i = 6
print_num()

```

### Q.2-6:次のコードを実行した結果を答えなさい

```python
def concatenate(s1="Hello", s2="World!"):
    return f"{s1}  {s2}"

# 使用例
print(concatenate(s2="SpringField!")) 

```

### Q.2-7:次のコードを実行した結果を答えなさい

```python
def concatenate(s1="Hello", s2="World!"):
    return f"{s1}  {s2}"

# 使用例
print(concatenate(s2="SpringField!", s1="Thanks")) 

```

### Q.2-8:次の関数の呼び出し方法として正しいものには◯を、誤っているものには✗を答えなさい

```python
def add(a, /, b, *, c):
    print(a + b + c)
```

1
```python
add(10, 20, 30, 40, 50)
```

2
```python
add(10, 20, 30)
```

3
```python
add(10, 20, c=30)
```

4
```python
add(10, b=20, c=30)
```

5
```python
add(a=10, b=20, c=30)
```

### Q.2-9:次の関数の呼び出し方法として正しいものには◯を、誤っているものには✗を答えなさい

```python
def sum_print(*args):
    result = 0
    for i in args:
        result += i     
    print(result)
```

1.
```python
sum_print(10, 20, 30, 40, 50)
```

2
```python
sum_print(10)
```

3
```python
sum_print()
```

4
```python
sum_print(10, args=20)
```

5
```python
sum_print(args=10)
```

### Q.2-10:次の関数の呼び出し方法として正しいものには◯を、誤っているものには✗を答えなさい

```python
def sum_print(start, *args):
    result = start
    for i in args:
        result += i     
    print(result)
```

1
```python
sum_print(10, 20, 30, 40, 50)
```

2
```python
sum_print(10)
```

3
```python
sum_print()
```

4
```python
sum_print(10, args=20)
```

5
```python
sum_print(args=10)
```

6
```python
list = [1, 2, 3, 4, 5]
sum_print(list)
```
7
```python
list = [1, 2, 3, 4, 5]
sum_print(*list)
```

### Q.2-11:次の関数の呼び出し方法として正しいものには◯を、誤っているものには✗を答えなさい

```python
def cart(**kwargs):    
    print(kwargs)
```

1.

```python
cart(apple=10, orange=20)
```

2

```python
cart(10)
```

3

```python
cart()
```

4
```python
cart(10, kwargs=20)
```

5
```python
cart(kwargs=10)
```

６
```python
dict = {"apple":10, "grape":20}
cart(**dict)
```

## 3.スコープ

### Q.3-1:次のコードを実行した結果を答えなさい

```python
a=100
def add(a, b):
    return a + b

# 使用例
result = add(10, 20)
print("足した結果は"+ str(result) +"です") 
```

### Q.3-2:次のコードを実行した結果を答えなさい

```python
minus=100
def add(a, b, c=minus):
    return a + b - c

# 使用例
result = add(10, 20)
print("計算結果は"+ str(result) +"です") 
print("a,bの和から"+ str(minus) +"を引きました") 
```

### Q.3-3:次のコードを実行した結果を答えなさい

```python
minus=100
def add(a, b, c=minus):
    return a + b - c

# 使用例
minus = 10000
result = add(10, 20)
print("計算結果は"+ str(result) +"です") 
print("a,bの和から"+ str(minus) +"を引きました") 
```