ChatGPTでコードの説明文をコメントアウトする

ChatGPT プログラム,ChatGPT

ChatGPTでコードの説明文をコメントアウトする

OpenAIの対話型AIモデル「ChatGPT」にでPythonとJavaScriptのコードの説明文をコメントアウトして貰う方法を紹介しています。
また、GPT-3.5、GPT-4で結果を比較しています。

確認環境
  • ChatGPT PLUS

Pythonコードの説明文をコメントアウトする

「ChatGPT」にPythonコードの説明文をコメントアウトして貰った結果になります。

以下のPythonにてコードの説明文をコメントアウトしたコードを生成して下さい。

def sortDictKeys(old_data, key_list):
new_data = {}
for value in key_list:
new_data[value] = old_data[value]
return new_data

data = {'type': 3, 'val': 1, 'name': 2}
data = sortDictKeys(data, ['name', 'type', 'val'])

print(data)

GPT-3.5の結果

以下のコードは、Pythonで書かれたコードで、与えられた辞書を、指定されたキーの順序に従って並べ替える関数を含んでいます。コメントアウトされた説明文を追加しました。

# 辞書を特定の順序でソートするための関数
def sortDictKeys(old_data, key_list):
    new_data = {}
    # 指定された順序で値を新しい辞書に追加する
    for value in key_list:
        new_data[value] = old_data[value]
    return new_data

# ソートする前のデータ
data = {'type': 3, 'val': 1, 'name': 2}

# キーのソート順序を指定して辞書をソートする
data = sortDictKeys(data, ['name', 'type', 'val'])

# ソートしたデータを表示する
print(data)

このコードは、与えられた辞書のキーを特定の順序でソートするための関数 sortDictKeys を定義し、それを使って与えられた辞書 data をソートしています。 sortDictKeys 関数は、旧辞書 old_data と、ソートされたキーのリスト key_list を受け取り、指定された順序でキーをソートした新しい辞書を返します。

ソートされる前の data 辞書は {'type': 3, 'val': 1, 'name': 2} であり、nametype、そしてval の順にキーをソートして、{'name': 2, 'type': 3, 'val': 1} となります。最後に、ソートされた辞書を表示しています。

GPT-4の結果

以下のコードは、Pythonで書かれたコードで、与えられた辞書を、指定されたキーの順序に従って並べ替える関数を含んでいます。コメントアウトされた説明文を追加しました。

# 関数 sortDictKeys を定義します。この関数は、old_data と key_list の2つの引数を取ります。
def sortDictKeys(old_data, key_list):
    # 新しい辞書 new_data を初期化します。
    new_data = {}
    
    # key_list の各要素 value に対して、ループを実行します。
    for value in key_list:
        # new_data に、old_data から value キーの値をコピーします。
        new_data[value] = old_data[value]
        
    # 並べ替えが完了した new_data を返します。
    return new_data

# data という辞書を定義し、いくつかのキーと値のペアを含めます。
data = {'type': 3, 'val': 1, 'name': 2}

# sortDictKeys 関数を使用して、data のキーを指定された順序 ['name', 'type', 'val'] に並べ替えます。
data = sortDictKeys(data, ['name', 'type', 'val'])

# 並べ替えられた data 辞書を出力します。
print(data)

このコードは、与えられた data 辞書を {'name’: 2, 'type’: 3, 'val’: 1} のように、指定されたキーの順序に従って並べ替えます。

JavaScriptコードの説明文をコメントアウトする

「ChatGPT」にJavaScriptコードの説明文をコメントアウトして貰った結果になります。

以下のJavaScriptにてコードの説明文をコメントアウトしたコードを生成して下さい。

let sec = 100000;

let day = Math.floor(sec / 86400);
let hour = Math.floor(sec % 86400 / 3600);
let min = Math.floor(sec % 3600 / 60);
let rem = sec % 60;

console.log(${day}日${hour}時間${min}分${rem}秒);

GPT-3.5の結果

コメントアウトされた説明文を追加しました。

// 変数"sec"を定義して、100000で初期化する
let sec = 100000;

// 変数"sec"を1日(86400秒)で割り、小数点以下を切り捨てた値を変数"day"に代入する
// 変数"sec"を1日で割った余りを変数"hour"に代入する
let day = Math.floor(sec / 86400);
let hour = Math.floor(sec % 86400 / 3600);

// 変数"sec"を1時間(3600秒)で割り、小数点以下を切り捨てた値を変数"min"に代入する
// 変数"sec"を1分(60秒)で割った余りを変数"rem"に代入する
let min = Math.floor(sec % 3600 / 60);
let rem = sec % 60;

// 変数"day"、"hour"、"min"、"rem"の値を文字列として結合し、コンソールに出力する
console.log(${day}日${hour}時間${min}分${rem}秒);

GPT-4の結果

コメントアウトされた説明文を追加しました。

// 以下のコードは、与えられた秒数を日、時間、分、秒に変換して表示するJavaScriptプログラムです。

// 変数 sec に 100000 を代入
let sec = 100000;

// 1日は86400秒なので、sec を 86400 で割って小数点以下を切り捨てた値を day に代入
let day = Math.floor(sec / 86400);
// 残りの秒数を 86400 で割った余りを hour に代入し、3600 で割って小数点以下を切り捨てた値を hour に再代入
let hour = Math.floor(sec % 86400 / 3600);
// 残りの秒数を 3600 で割った余りを min に代入し、60 で割って小数点以下を切り捨てた値を min に再代入
let min = Math.floor(sec % 3600 / 60);
// 残りの秒数を 60 で割った余りを rem に代入
let rem = sec % 60;

// 結果をテンプレートリテラルでフォーマットし、コンソールに表示
console.log(${day}日${hour}時間${min}分${rem}秒);

結果として、GPT-4の方がより詳細にコメントアウトする事が確認できますが、単純にコメントアウトの文字数が増えるだけでGPT-3でも十分に理解できるため、コード上のコメントアウトとするにはGPT-3の方が向いているのかも知れません。