著者:飯尾 淳
本連載では「Pythonを昔から使っているものの、それほど使いこなしてはいない」という筆者が、いろいろな日常業務をPythonで処理することで、立派な「蛇使い」に育つことを目指します。その過程を温
かく見守ってください。皆さんと共に勉強していきましょう。第14回では、話題のAIチャットボット「ChatGPT」を使ったPythonプログ「ラムの作成にチャレンジします。ChatGPTは、どの程度のプログラムを生成してくれるのでしょうか。
シェルスクリプトマガジン Vol.84は以下のリンク先でご購入できます。
図2 1回目にChatGPTが生成したPythonプログラム
1 2 3 4 5 6 7 8 9 |
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プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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) |