010_Pythonエンジニア認定基礎試験5-1~5

目次

第5章_関数

今回の項目では、関数について出題されます。
本試験の主教材である「Python3エンジニア認定基礎試験問題集」では第5章(P66~P67)の5問の内容です。

練習問題 1

関数を定義する書き始めとして、正しいものを選択してください。

A. def kansu()

B. kansu(a):

C. def kansu():

D. def kansu:

答えはコチラをクリック!

答え:C

ポイント
関数は「def 関数名(引数):」と定義します。

「Pythonでは、関数という名前のプログラムの道具を作れます。この道具は、何か仕事をさせたいときに使います。作るときは、次の形で書きます:

  1. def は「道具を作るよ!」という合図です。
  2. 次に**「道具の名前」**を書きます。例えば「hello」など、好きな名前を付けられます。
  3. 名前の後に、かっこ () を付けます。この中に、道具を使うときに必要な材料(引数)を書くこともできます。材料がいらないときはそのまま空にしてOK
  4. 最後に 「:(コロン)」 を書いて、その下に、道具が何をするかを書きます。(少しだけ右にずらして書き始めます。)

例えば:

def say_hello():
    print("こんにちは!")

この例では、「say_hello」という道具を作っています。これを使うと、「こんにちは!」と画面に出してくれます

練習問題 2

関数calculateを呼び出す方法として誤っているものを選択してください。

A. x=calculate(5, 10)
B. x=calculate
  y=x(5, 10)
C. x=calculate(5 10)
D. calculate(5, 10)

答えはコチラをクリック!

答え:C

ポイント
Pythonでは、関数に複数の数字や言葉を渡すとき、「カンマ(,)」で区切らないといけません。


例えば、「calculate(5, 10)」と書けば「5」と「10」が関数に渡されます。でも、「calculate(5 10)」のようにカンマがないとPythonが「これ何?」と分からなくなってしまいます。

他の選択肢について:

  • A. x=calculate(5, 10)
    → 正しい書き方。関数に「5」と「10」を渡して結果を「x」に入れています。
  • B. x=calculate / y=x(5, 10)
    → 正しい書き方。まず calculate を 「x」 に入れて、次に 「x」 を使って関数を呼び出しています。
  • D. calculate(5, 10)
    → 正しい書き方。関数に「5」と「10」を渡して、すぐにその結果を使います。

だから、間違っているのは C だけです。

練習問題 3

次のコードを実行するとどうなりますか?

x = 20

def example_function():
    x = 10
    print(x)

example_function()
print(x)

1.10 と 20 が出力される

2.20 と 20 が出力される

3.エラーが発生する

4.10 と 10 が出力される

答えはコチラをクリック!

答え:1

ポイント
このプログラムには2つの「x」がありますが、それぞれ別々の場所で使われています。

外で作った「x」 → これは「20」って値が入っていて、みんなが見える場所に置いてある(グローバル変数)。

中で作った「x」 → これは「10」って値が入っていて、その部屋(関数)の中だけで使える特別な「x」(ローカル変数)。

プログラムの動き:

  1. 関数の中でx = 10 が使われて、「10」が表示される。
    • この「x」は関数の中だけで使える特別なものだから、外の「x = 20」には影響しない。
  2. 関数の外で「x」を見たときは、外に置いてある「x = 20」が見えるから、「20」が表示される。

つまり、関数の中と外で同じ名前の「x」を使っていても、それぞれ別の箱に値が入っています

練習問題 4

次の関数があります。

def greet(name, message="Hello"):
    print(f"{message}, {name}!")

この関数を呼び出す正しい方法を選んでください。

  1. greet(“Alice”, “Good morning”)
  2. greet(name=”Alice”, message=”Good morning”)
  3. greet(name=”Alice”)
  4. 以上すべて正しい
答えはコチラをクリック!

答え:4

ポイント
この関数は位置引数とキーワード引数の両方を受け付けます。

引数のnameは指定しないとエラーになりますが、messageは何も指定しないと「Hello」が入力されます。

呼び出し方の説明:

1.greet(“Alice”, “Good morning”)
→ nameを「Alice」、messageを「Good morning」にしています。だから結果は:

Good morning, Alice!

2.greet(name=”Alice”, message=”Good morning”)

→ 今度は「nameはAlice、messageはGood morning」という、順番ではなくキーワードを使って呼び出しているけど、同じ結果になります。

Good morning, Alice!

3.greet(name=”Alice”)

→ messageを指定しないときはデフォルトで「Hello」が使われます。

Hello, Alice!

つまり、この関数はいろんな呼び方ができるけど、どれも間違いではありません。

練習問題 5

次のコードを実行した結果として正しいものを選択してください。

default_greeting = "Good morning"
def greet(greeting=default_greeting, name=""):
    print(f"{greeting}, {name}!")

default_greeting = "おはよう"
name = "Alice"
greet(name=name)

A.おはよう, Alice!
B. Good morning, Alice!
C. Good morning, !
D. おはよう, !

答えはコチラをクリック!

答え:B

ポイント
関数の引数にデフォルト値を設定すると、引き数が与えられなかった場合にデフォルト値を使用します。

コード中の greet() 関数の greeting 引数は、関数が定義された時点で default_greeting の値(”Good morning”)を取得しています。そのため、その後で default_greeting に新しい値(”おはよう”)を代入しても、関数内のデフォルト値には影響を与えません。 name 引数は呼び出し時に値を指定されているため、その値が使用されます。
結果、出力は 「Good morning!, Alice!」 となります

確認問題 1

関数の定義の書き始めとして正しいものを1つ選択してください。

1、def func
2、def “function”:
3、def func(x, y):
4、def function()

答えはコチラをクリック!

答え:3

関数を定義する書式は

def 関数名(仮引数1, 仮引数2, … ):

のため、この書式に当てはまる答えは3のみです。

確認問題 2

関数funcを呼び出す方法として正しいものを選択してください。

1、def func
2、func “value”
3、x = func:
4、y = func()

答えはコチラをクリック!

答え:4

関数を呼び出すには、関数名に続けて丸括弧「()」内に引数を書き実行します。

確認問題 3

関数で使用する変数の特徴として誤っているものを選択してください。
1、関数内で定義された変数は、関数の外部から直接アクセスできる。

2、関数内の変数は、同じ名前のグローバル変数に影響を与えない。
3、関数の引数として渡された変数は、呼び出し元の変数と同じ名前でも使用できる。
4、関数内の変数は、関数の実行が終了するとメモリから解放される。

答えはコチラをクリック!

答え:

関数内で定義された変数はローカル変数と呼ばれ、関数のスコープ内でのみ有効です。そのため、関数の外部から直接アクセスすることはできません。

確認問題 4

以下の関数を使用して、キーワード引数を使った関数の呼び出し方法として誤っているものを選びなさい。

def greet(name, age, city):
    print(f"こんにちは、{name}さん!{age}歳で{city}に住んでいるのですね。")

1、greet(name=”太郎”, age=25, city=”東京”)

2、greet(name=”三郎”, city=”福岡”, 40)

3、greet(“次郎”, 20, city=”名古屋”)

4、greet(age=30, city=”大阪”, name=”花子”)

答えはコチラをクリック!

答え:2

この選択肢では、キーワード引数 name と city を指定した後に、キーワードを指定しない引数 40 を渡しているためエラーになります。キーワード引数を使用する場合は、すべての引数をキーワード形式で指定するか、位置引数を先に記述する必要があります。

確認問題 5

以下のコードを実行した結果として正しいものを選択してください。

default_list = [1, 2, 3]  

def modify_list(value, my_list=default_list):  
    my_list.append(value)  
    return my_list

default_list = [4, 5, 6]  

result1 = modify_list(7)  
result2 = modify_list(8)

1、result1 = [7], result2 = [7, 8]

2、result1 = [1, 2, 3, 7], result2 = [1, 2, 3, 7, 8]

3、result1 = [4, 5, 6, 7], result2 = [4, 5, 6, 7, 8]

4、エラーが発生する

答えはコチラをクリック!

答え:2

関数の定義時点でデフォルト引数 my _list=default_list は評価されます。この時、default_list の値は [1, 2, 3] です。

その後、変数 default_list に [4, 5, 6] を代入しても、関数内で使用される my_listのデフォルト値は最初に評価された [1, 2, 3] のままです。

modify_list(7) を呼び出すと、リスト [1, 2, 3] に 7 が追加され、次の呼び出しでは同じリストにさらに 8 が追加されます。

結果として、result1 = [1, 2, 3, 7] , result2 = [1, 2, 3, 7, 8] となります。

次回は…

次回は「011_Pythonエンジニア認定基礎試験5-5~10」です。
関数について学びましょう!

参考資料一覧:Python3エンジニア認定[基礎試験]問題集
https://www.pythonic-exam.com
https://data-engineer-japan.com
https://mynavi-agent.jp
https://python-basic.com
https://www.tokai-bs.co.jp
https://freelance.techcareer.jp/articles/wp/skills/python/detail/550/
https://pythonzen-pep8-exam.jp/

目次