複数の戻り値
Pythonでは、関数を扱う際に非常に柔軟であり、関数から複数の値を返すことが可能です:
def f():
return 107, 'hello', [8, 9, 10]
print(f()) # (107, 'hello', [8, 9, 10])
a, b, c = f()
print(a) # 107
print(b) # hello
print(c) # [8, 9, 10]この例では、f()関数は3つの値(107、'hello'、[8, 9, 10])を返しています。a, b, c = f()を使って、各戻り値を変数に代入できます。
最も興味深いのは、複数の値を返すことに特別な魔法があるわけではないということです。関数f()が実際に行っているのは、3つの要素(107、'hello'、[8, 9, 10])を持つタプルを1つの値として返しているのです。print(f())で全体の戻り値を出力すると、その戻り値がタプルであることがわかります(括弧に注目してください)。関数がタプルを返すとき、私たちはその値をa、b、cにアンパックするだけです。
つまり、実際には関数は常に1つの値を返しますが、タプルを返すことで複数の値を返していると解釈できるのです。
チャレンジ
aをbで割ったときの商と余りを返す関数を書いてください。
入力には2つの整数、aとbが含まれます。
プログラムは3行を出力します(関数を3回呼び出します)。各行には2つの数を割った後の商と余りを含めます:
最初の行は、
aとbの結果を出力します。2行目は、
a + 1とb + 1の結果を出力します。3行目は、
a - 1とb - 1の結果を出力します。
入力 | 出力 |
|---|---|
7 | 1 3 |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB