« 外資系FTIコンサルティングとジャニーズ事務所、「氏名」NG記者リストの感想&11km走、1km4分半バトル | トップページ | 飛び道具の駒(香・角・飛車)を後で並べる伊藤流の匠七段(20歳)、藤井七冠に完敗、風格では勝利♪~2023竜王戦・第1局 »

Python(パイソン)入門3~乱数を利用した、じゃんけんゲーム作成など(生成AI・ChatGPT4も使用)

前回の2本目の記事から1ヶ月も経ってしまったが、人気のプログラミング言語「Python」(パイソン)の3本目の記事を書くことにしよう。 1本目の記事2本目の記事は、次の通り。

  

 Python入門1~人気プログラミング言語を高校教科書副教材とオンライン環境Bit Arrowで簡単に

  

 Python入門2~高校副教材とオンライン環境Bit Arrow、さらにAI(ChatGPT4)も使用

   

最初から、高校の副教材『Python入門』(東京書籍,2022年)と、オンライン環境「ビットアロー」を使用。前回からは、対話型の生成AI、ChatGPT(model4)も参照。今回も、ChatGPT4を参照した。

   

これまでの感触だと、ネット情報の通り、GPT4のプログラミング能力は高い。というより、数ある能力の中で、プログラミングの能力が一番高いような気もする。全く間違えてないし、余裕を感じるのだ。

  

つい最近、GPT4は画像も扱えるようになった。試しに、Pythonの簡単なプログラムのJPEG画像を2枚見せたら、どちらも正確に説明。完全に読み取ってる。ただ、ちょっと回答のスピードが遅くなったから、まだ画像の読取は負荷が高いらしい。

  

    

      ☆     ☆     ☆

では、プログラミングの話に入ろう。数を1つ与えて、それが3か2の倍数なら、「3か2の倍数」と表示するプログラム。if文の条件に、論理演算子(=結合子)orを使う練習。

     

231006a

   

テキストでは、もっと半角スペースを多用してるが、面倒なので、上では少し省略。3の倍数という条件は、3で割った余りが0(x%3=0)と考えてる。x=9で実行した結果は、下の通り。

    

231006b

   

   

      ☆     ☆     ☆

次に、aとbの値をキーボードで入力して、a+bの計算結果を表示するプログラム。

   

普通に4とかインプットするだけだと、数ではなく文字として扱ってしまうので、足し算ができない。input関数で数字入力した後、int関数を使って、数へと変換する必要がある。入力の箇所の書き方(a->)は、おそらく色々あると思う。ここではテキストに従った。

      

231006c

    

実行して、aに5、bに8を入力すると、13という正答を表示した。

  

231006p

   

231006d

  

上のプログラムの画像を、ChatGPT4に入力すると、正しく説明して来た。画像の処理については、プログラミング以外も含めて、わりと近いうちに別記事を書く予定。ここでは簡単な報告に留める。

    

    

      ☆     ☆     ☆

続いて、1以上8未満の整数のうち、奇数をすべて表示させるプログラム。変数の範囲を示すfor文と、条件を示すif文を組み合わせる。「未満」というのがちょっと分かりにくい。この後の別のプログラムだと、「以下」になるので、余計に混乱する。

     

奇数は、2で割った余りが0でない(!=0)と考えた。「でない」という否定表現を使いたかっただけで、余りが1である(==1)と考えてもいいはず。1以上8未満の整数で実行すると、1、3、5、7と縦に並んだ。間を空けて横に並べる方法はまだ知らないが、GPT4に聞けばすぐ答えると思う。

          

231006e

   

231006f

   

上のプログラムの画像も、GPT4は正しく説明できた。

    

    

      ☆     ☆     ☆

そして、今回のメインである、じゃんけんゲーム。グーを0、チョキを1、パーを2で表現。相手(コンピューター)には、乱数を発生させるrandom.randint関数を使って、0以上2以下の整数のどれか1つを選ばせる(未満ではないので要注意)。自分は、どれか1つの数を入力。

        

まず、aite(相手)とjibun(自分)の手を示すだけのプログラムを実行して、1(チョキ)を入力。一番最初に、乱数を使うための準備として、randomモジュールという仕組みをインポートする。

     

231006g

    

231006h

  

上の場合、相手は2(パー)で、自分は1(チョキ)だから、勝敗は自分の勝ちとなる。この、じゃんけんの勝敗まで表示するプログラムは、例えば、次の通り。勝敗の決定には、if文を三重に使用。

     

231006i

     

勝ち負けの結果(result)は、(3+jibun-aite)%3の値で決めることが可能。最初に3をプラスするのは、マイナスを避けるため。

  

例えば、相手が1(チョキ)、自分が0(グー)なら、(3+0-1)%3=2%3=2で、自分の「勝ち」となる。テキストでは、結果を数で表すだけになってたので、勝敗は日本語で表示するように改良した。

    

3回やって、引き分けが2回続いた後、負けで終了。私は1(チョキ)、コンピューターは0(グー)だった。

  

231006j

   

   

      ☆     ☆     ☆

最後に、ChatGPT4を使用。まず、下のように、じゃんけんゲームに関して長めの説明を入力。自由にプログラミングさせてみた。この日本語の説明を素早く読み取って対応できるのは、素晴らしい能力だと感心。青・緑・赤・黄色・白・グレーの色分けも分かりやすい。「コンピューター」と「あなた」のじゃんけん。

      

231006k

     

231006l

    

231006m

  

プログラムの中に日本語の説明を加えて、グー、チョキ、パーという言葉も入れて、自分の入力が0、1、2のどれでも無い時にはエラー警告を出せる仕組みになってる。右に長く伸びてる部分はカット(省略)した。

     

勝ち負けの判定には、普通の場合分けを利用。勝ちは、自分が0(グー)で相手が1(チョキ)か、自分が1で相手が2(パー)か、自分が2で相手が0グーの時。・・・or・・・or・・・の形。丁寧なプログラムだが、人間にとってはやや長過ぎる気もする。

     

    

      ☆     ☆     ☆

上のプログラムを書かせた直後、私が書いたプログラムを入力してみた。画像ではなく、文字入力。すると、(3+jibun-aite)%3という処理まで正確に理解して、私の細かい入力ミスまで指摘して来た。やさしく、気を使いながら♪

      

231006n

     

    

231006o

   

私はうっかり、全角でプラスを入力してしまったのだ。普通のプログラミングのシステムなら、エラーとしてチェックして来る所を、優しくアドバイス。人間の先生でも、ここまでの配慮は難しい。

   

「注意していただきたいことがあります: 一部の環境では・・・正しく認識されないかもしれません。通常の半角の’+'を使用することをおすすめします」

  

  

      ☆     ☆     ☆

プログラミングの家庭教師として考えても、安くて優秀。長時間労働でも追加料金なし。円安が痛いだけ♪ 1ヶ月20ドルが、今の為替レート(1ドル、約150円)で3000円になってしまった。

   

というわけで、プログラミングでも画像関連でも、もっとGPT4を使って行く予定。それでは今日はこの辺で。。☆彡

    

       (計 2636字)

| |

« 外資系FTIコンサルティングとジャニーズ事務所、「氏名」NG記者リストの感想&11km走、1km4分半バトル | トップページ | 飛び道具の駒(香・角・飛車)を後で並べる伊藤流の匠七段(20歳)、藤井七冠に完敗、風格では勝利♪~2023竜王戦・第1局 »

プログラミング」カテゴリの記事

AI」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« 外資系FTIコンサルティングとジャニーズ事務所、「氏名」NG記者リストの感想&11km走、1km4分半バトル | トップページ | 飛び道具の駒(香・角・飛車)を後で並べる伊藤流の匠七段(20歳)、藤井七冠に完敗、風格では勝利♪~2023竜王戦・第1局 »