演習課題「グローバル変数へ再代入」
右側のコードエリアには、ローカル変数 name
と敬称をつける関数 give_an_honorific
が用意されています。
しかし、関数内でグローバル変数へ再代入しようとしたためエラーが起きてしまいます。
修正して、メッセージを正しく表示させてください。
期待する出力値
kirishimasan
※有料会員になるとこの動画をご利用いただけます
詳しい説明を読む
#06:関数のなかで再代入
このチャプターでは、関数内での変数の代入について学習しましょう
- 基本的に関数内でグローバル変数に再代入しようとすると、エラーが発生する
x = 1
def func0():
x *= 2
print(f"x = {x}")
func0()
- 上のコードを実行したときにエラーが発生する訳は、5 行目のコードが実行されたとき、func0 関数のローカル変数に再代入することが試みられるから
- 今回、func0 関数のローカル変数に名前が x の変数はないため、エラーが発生する
- エラーが発生しないようにするためには、次のコードのようにグローバル変数への再代入をしないようにすればよい
x = 1
def func0():
y = x * 2
print(f"y = {y}")
func0()
- このコードのように、ローカル変数 y を新たに用意することで、エラーが発生しないようにする
- 関数内でもグローバル変数の示す値を取得することはできるため、このコードを実行してもエラーは発生しない
- 基本的に内部関数内で非ローカル変数に再代入しようとすると、エラーが発生する
x = 1
def func0():
y = x * 2
def func1():
y *= 2
func1()
print(f"y = {y}")
func0()
- 上のコードを実行したときにエラーが発生する訳は、8 行目のコードが実行されたとき、func1 関数のローカル変数に再代入することが試みられるから
- 今回、func1 関数のローカル変数に名前が y の変数はないため、エラーが発生する
- エラーが発生しないようにするためには、次のコードのように非ローカル変数への再代入をしないようにすればよい
def func0():
y = x * 2
def func1():
z = y * 2
print(f"z = {z}")
func1()
print(f"y = {y}")
func0()
- このコードのように、ローカル変数 z を新たに用意することで、エラーが発生しないようにする
- 内部関数内で非ローカル変数の示す値を取得することはできるため、このコードを実行してもエラーは発生しない
ログインすると採点できます
コードの実行