複数の戻り値

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())で全体の戻り値を出力すると、その戻り値がタプルであることがわかります(括弧に注目してください)。関数がタプルを返すとき、私たちはその値をabcにアンパックするだけです。
つまり、実際には関数は常に1つの値を返しますが、タプルを返すことで複数の値を返していると解釈できるのです。

チャレンジ

abで割ったときの商と余りを返す関数を書いてください。
入力には2つの整数、abが含まれます。
プログラムは3行を出力します(関数を3回呼び出します)。各行には2つの数を割った後の商と余りを含めます:
  • 最初の行は、abの結果を出力します。
  • 2行目は、a + 1b + 1の結果を出力します。
  • 3行目は、a - 1b - 1の結果を出力します。
入力
出力
7 4
1 3 1 3 2 0
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue