著者:飯尾 淳
本連載では「Pythonを昔から使っているものの、それほど使いこなしてはいない」という筆者が、いろいろな日常業務をPythonで処理することで、立派な「蛇使い」に育つことを目指します。その過程を温
かく見守ってください。皆さんと共に勉強していきましょう。第14回では、話題のAIチャットボット「ChatGPT」を使ったPythonプログ「ラムの作成にチャレンジします。ChatGPTは、どの程度のプログラムを生成してくれるのでしょうか。
シェルスクリプトマガジン Vol.84は以下のリンク先でご購入できます。![]()
![]()
図2 1回目にChatGPTが生成したPythonプログラム
import sys
if len(sys.argv) < 3:
print("Usage: python program_name.py num1 num2")
else:
num1 = float(sys.argv[1])
num2 = float(sys.argv[2])
result = num1 + num2
print("Result:", result)
図3 2回目にChatGPTが生成したPythonプログラム
import sys
from fractions import Fraction
if len(sys.argv) < 3:
print("Usage: python program_name.py num1 num2")
else:
try:
num1 = float(sys.argv[1])
num2 = float(sys.argv[2])
if num1.is_integer() and num2.is_integer():
num1, num2 = int(num1), int(num2)
elif '/' in sys.argv[1] and '/' in sys.argv[2]:
num1 = Fraction(sys.argv[1])
num2 = Fraction(sys.argv[2])
result = num1 + num2
print("Result:", result)
except ValueError:
print("Please enter numbers only.")
図4 3回目にChatGPTが生成したPythonプログラム
import sys
from fractions import Fraction
if len(sys.argv) < 3:
print("Usage: python program_name.py num1 num2")
else:
try:
num1 = 0
if '/' in sys.argv[1]:
num1 = Fraction(sys.argv[1])
else:
num1 = float(sys.argv[1])
num2 = 0
if '/' in sys.argv[2]:
num2 = Fraction(sys.argv[2])
else:
num2 = float(sys.argv[2])
result = num1 + num2
print("Result:", result)
except ValueError:
print("Please enter numbers only.")
図5 4回目にChatGPTが生成したPythonプログラム
import sys
from fractions import Fraction
def check_arg_validity(arg):
try:
if '/' in arg:
num = Fraction(arg)
else:
num = float(arg)
return num
except ValueError:
return None
if len(sys.argv) < 3:
print("Usage: python program_name.py num1 num2")
else:
try:
num1 = check_arg_validity(sys.argv[1])
num2 = check_arg_validity(sys.argv[2])
if num1 is None or num2 is None:
print("Please enter numbers only.")
else:
result = num1 + num2
print("Result:", result)
図6 5回目にChatGPTが生成したPythonプログラム
import sys
from fractions import Fraction
def check_number(num_str):
try:
float(num_str)
except ValueError:
try:
Fraction(num_str)
except ValueError:
print(f"{num_str} is not a valid number.")
return None
return num_str
def add2(num1, num2):
result = Fraction(num1) + Fraction(num2)
print(f"{num1} + {num2} = {result}")
if __name__ == '__main__':
num1 = check_number(sys.argv[1])
num2 = check_number(sys.argv[2])
if num1 and num2:
add2(num1, num2)