CONTENTS コンテンツ

ChatGPTを使ってPythonを学ぼう!(5)

ChatGPTを使ってPythonを学ぼう!

2024.02.03

 Python学習編5回目です。

 前回は東京大学のPython学習ページで演算と条件分岐を学びました。今回は1-4. テストとデバッグ。

実は、生じたバグを取る対処法よりも、そもそもバグが生じにくくする予防法の方が大切です。 Pythonにおいて特に重要視されているのが、コーディングスタイル、つまりコードの書き方です。 読みにくい(可読性の低い)コードだと、些細なミスが生じやすく、また見つけにくいからです。

 わかる。これ時間効率の話なんだろうけど、バグ取りばからいやってると萎える心理的な面もある。

 今回は説明だけで練習問題がなかったのでChatGPTに練習問題を出させよう。

入力:Pythonの簡単なプログラムをPEP8に従って書いてください。ただし、このとき1か所だけPEP8に従わない書き方としてください。

出力:了解しました。PEP8に従ったPythonの簡単なプログラムを書き、1か所だけPEP8に反する部分を含めます。

以下のプログラムは、簡単な関数を定義し、その関数を使用しています。PEP8に従わない箇所を1か所だけ含めますので、それを見つけることができるかどうか挑戦してみてください。

pythonCopy code

def greet(name):
“””
Given a name, returns a greeting.
“””
return f”Hello, {name}!”

#PEP8に反する部分がここにあります

greeting = greet(“World”)

print(greeting)

このコードでは、関数定義、ドキュメンテーションコメント、文字列のフォーマットなど、多くのPEP8の規約に従っています。しかし、指定された箇所にPEP8に反する書き方が含まれています。それを特定してみてください。

これらの問題はPythonの基本的な条件分岐の理解と実践に役立ちます。それぞれの問題に対して、自分でコードを書いてみて、それから実行してみてください。もしサポートが必要な場合は、ぜひ聞いてください。

うん、わからん。

出力:PEP8に違反している部分は、実際にはコメントの後ろにあるコードの行です。PEP8では、関数定義やクラス定義の後に2行の空行を入れることが推奨されていますが、この例では関数定義の後に空行が1行しかありません。これがPEP8違反の部分です。

知らなかった。

入力:PeP8のスタイルのうち、重要なもの、間違いやすいものを10個挙げてください。

出力:PEP 8(Python Enhancement Proposal 8)は、Pythonコードの書き方に関するスタイルガイドです。特に重要かつ間違いやすい部分を10個挙げます。

  1. インデント – タブではなくスペースを使用し、1レベルのインデントにつき4スペースを使う。
  2. 最大行長 – 1行は最大79文字まで。長い行は適切に折り返す。
  3. 関数とクラスの間隔 – トップレベルの関数やクラスの定義の間には2行の空行を入れる。クラス内のメソッド定義の間には1行の空行を入れる。
  4. インポート – インポートはファイルの最初で、標準ライブラリ、サードパーティのライブラリ、ローカルアプリケーション/ライブラリの順にグループ分けし、それぞれのグループ間に空行を入れる。
  5. スペースの使用 – 演算子の前後やコンマの後にはスペースを入れるが、括弧やブラケット、ブレースの直内側にはスペースを入れない。
  6. コメント – コメントは明確で最新の情報を反映するものでなければならず、不要なコメントは避ける。コメント行は「#」の後にスペースを1つ入れる。
  7. 命名規則 – クラス名はCamelCase、関数や変数名はsnake_caseで書く。常に意味のある名前を付ける。
  8. 比較演算子Noneとの比較は == ではなく is を使用する。
  9. 文字列の連結 – 文字列の連結には + よりも join メソッドを使用することが推奨される。
  10. 例外処理except 文では具体的な例外を指定し、裸の except: を避ける。

 うーん、これらを気にしながら練習するのは脳の容量(メモリ)が足りなくなる。コード書いてみたときに「PEP8に違反している箇所を指摘して、修正してください」と聞くルーチンを作るべきか。

次回に続く

この記事をシェアする