auの日記

プログラミング初心者の日記。(auはハンドルネームです)

AtCoderのREについて調べてみた

auです。

Pythonを使ってAtCoderの問題を解いていた際に、「RE」というみたことの無い実行結果になったので調べてみました。

REとは

REとは、Runtime Errorの略称です。

公式では

プログラムの実行中にエラーが発生しました。コンパイル時に検知できなかったエラーがあります.スタックオーバーフロー、ゼロ除算などが原因です.

となっていました。


ゼロ除算のエラーはPythonでも起こり得ます。

そう言ったところをみるといいのかもしれません。


僕の場合は、関数とexitを共存させた場合にエラーが起きました。何を言っているのかわからないと思うので例をかくとこんな感じです。

if n == 0:
  print("ERROR")
  exit()


def function(n):
  ...
  return 0


function(n)

nがゼロの場合に「'ERROR'」と出力されます。
それ以外だと関数に値を渡して何らかの処理をするプログラムです。

正直これでなぜREが出るのか分かりませんでしたが、'ERROR'と出す部分も関数化することで解決しました。

def zero_error(n):
  if n == 0:
    return True
  return False


def function(n):
  zero_error(n)
  ...
  return 0

イメージ的にはこんな感じです。

どちらかに統一していないとダメということなのでしょうか・・・?