AI輔助編程Python實戰基於GitHub Copilot和ChatGPT Learn Ai-Assisted Python Programming: With Github Copilot and Chatgpt

[美] 利奧·波特(Leo Porter)[加] 丹尼爾·津加羅(Daniel Zingaro)

  • AI輔助編程Python實戰基於GitHub Copilot和ChatGPT-preview-1
  • AI輔助編程Python實戰基於GitHub Copilot和ChatGPT-preview-2
AI輔助編程Python實戰基於GitHub Copilot和ChatGPT-preview-1

商品描述

本書系統地介紹瞭如何利用AI助手Copilot和ChatGPT來提升Python編程的效率和質量。本書從AI助手的基礎概念講起,逐步深入到代碼組織、閱讀、測試、提示工程等關鍵技能,並引導讀者通過實踐掌握如何拆解復雜問題、查找和修復bug、自動化任務處理及開發電腦游戲。本書不僅提供了豐富的實例和練習,還探討了AI助手的潛力和局限,以及未來的發展趨勢,是希望在編程領域融入AI技術的讀者的理想選擇。

本書適合對編程感興趣,希望借助AI技術提升編程能力的初學者和中級程序員閱讀。

作者簡介

Leo Porter博士是加州大學聖地亞哥分校電腦科學與工程系的教學教授。他因研究電腦課程中“同伴指導”的效果、利用點答器數據預測學生成績,以及設計基本數據結構的概念清單而聞名。他與人合教了廣受好評的Coursera專項課程“面向對象的Java編程:數據結構及其超越”,吸引了超過30萬名學員註冊學習;同時,他還在edX MicroMasters平臺上開設了數據科學專業的第一門課程“Python for Data Science”,吸引了超過20萬名學員註冊學習。他曾獲得6項最佳論文獎、SIGCSE 50周年紀念十大研討會論文獎、沃倫學院傑出教學獎及加州大學聖地亞哥分校學術參議院傑出教學獎。他是ACM的傑出會員,並且曾在ACMSIGCSE董事會任職。

Daniel Zingaro博士是多倫多大學的副教授。在過去的15年中,他向數千名學生講授了Python編程入門課程,並編寫了目前這門課程使用的教科書。他還撰寫了數十篇關於如何教授和學習電腦科學入門課程的教育研究文章。Daniel與No Starch Press合作創作了兩本書——上述的Python教科書和一本關於算法的圖書——這兩本書均被翻譯成多種語言。Daniel獲得了多個著名的教學和研究獎項,包括一個50年時間考驗獎和多個最佳論文獎。

目錄大綱

第 1章 走近AI輔助編程 1

1.1 我們如何與電腦對話 1

1.1.1 讓難度降低一點兒 2

1.1.2 讓難度降低一大截 3

1.2 本書涉及的技術 3

1.2.1 Copilot,你的AI助手 4

1.2.2 一分鐘搞懂Copilot的背後原理 4

1.3 Copilot如何改變我們學習編程的方式 5

1.4 Copilot還可以做什麽 7

1.5 使用Copilot的風險和挑戰 8

1.6 我們所需的技能 9

1.7 大眾對於AI助手的擔憂 10

本章小結 11

 

第 2章 快速上手Copilot 12

2.1 為接下來的學習做好準備工作 12

2.2 設置系統 14

2.3 在VS Code中使用Copilot 15

2.3.1 配置工作目錄 15

2.3.2 驗證配置是否運行正常 16

2.4 應對常見的Copilot難題 19

2.5 我們的第 一個編程練習 20

本章小結 30

 

第3章 設計函數 31

3.1 初識函數 32

3.1.1 函數的組成部分 33

3.1.2 使用函數 35

3.2 函數的益處 36

3.3 函數的角色 37

3.4 交給函數的合理任務應該是什麽樣的 40

3.4.1 優秀函數的特徵 40

3.4.2 一些正面示例和反面示例 41

3.5 與Copilot協作設計函數的流程 42

3.6 借助Copilot創建優秀函數的幾個示例 43

3.6.1 Dan的股票收益 43

3.6.2 小李子的密碼 47

3.6.3 獲得一個強密碼 51

3.6.4 拼詞游戲的計分規則 52

3.6.5 最佳單詞 55

本章小結 56

 

第4章 理解Python代碼(上) 58

4.1 為什麽需要閱讀代碼 58

4.2 要求Copilot解釋代碼 60

4.3 必知必會的十大編程特性(第 一部分) 64

4.3.1 #1函數 65

4.3.2 #2變量 65

4.3.3 #3條件判斷 67

4.3.4 #4字符串 70

4.3.5 #5列表 72

4.3.6 小結 74

本章小結 75

 

第5章 理解Python代碼(下) 76

5.1 必知必會的十大編程特性(第二部分) 76

5.1.1 #6循環 76

5.1.2 #7縮進 81

5.1.3 #8字典 88

5.1.4 #9文件 89

5.1.5 #10模塊 92

本章小結 95

 

第6章 測試與提示工程 96

6.1 為什麽測試代碼至關重要 96

6.2 黑盒測試與白盒測試 97

6.2.1 黑盒測試 97

6.2.2 如何確定使用哪些測試用例 99

6.2.3 白盒測試 100

6.3 如何測試代碼 101

6.3.1 使用Python提示符進行測試 101

6.3.2 在Python文件中進行測試(我們不會採用這種方法) 102

6.3.3 doctest模塊 102

6.4 重新審視與Copilot協作設計函數的流程 105

6.5 完整測試的示例 106

6.5.1 算出空位最多的那一排能容納多少位新學生 106

6.5.2 改進提示詞以尋求更好的解決方案 109

6.5.3 測試新版解決方案 111

6.6 另一個完整測試的示例:使用外部文件進行測試 113

6.6.1 我們應該執行哪些測試 114

6.6.2 創建函數 116

6.6.3 測試函數 117

6.6.4 與doctest相關的常見難題 118

本章小結 120

 

第7章 問題分解 121

7.1 問題分解簡介 121

7.2 自頂向下設計的小示例 122

7.3 作者特徵識別 123

7.4 採用自頂向下設計實現作者特徵識別 125

7.5 將加工數據環節分解為子問題 126

7.5.1 計算出神秘圖書的簽名 126

7.5.2 計算出所有已知簽名 131

7.5.3 尋找最接近的已知簽名 132

7.6 自頂向下設計總結 134

7.7 實現所有函數 134

7.7.1 實現clean_word函數 135

7.7.2 實現average_word_length函數 136

7.7.3 實現different_to_total函數 137

7.7.4 實現exactly_once_to_total函數 138

7.7.5 實現split_string函數 140

7.7.6 實現get_sentences函數 142

7.7.7 實現average_sentence_length函數 142

7.7.8 實現get_phrases函數 143

7.7.9 實現average_sentence_complexity函數 144

7.7.10 實現make_signature函數 145

7.7.11 實現get_all_signatures函數 145

7.7.12 實現get_score函數 148

7.7.13 實現lowest_score函數 149

7.7.14 實現process_data函數 150

7.7.15 實現make_guess函數 151

7.8 進一步探討 152

本章小結 153

 

第8章 調試代碼並且更深入地理解代碼 154

8.1 bug是如何產生的 154

8.2 如何找出bug 155

8.2.1 使用打印語句瞭解代碼行為 156

8.2.2 使用VS Code的調試器瞭解代碼行為 158

8.3 發現bug後如何修復 164

8.3.1 要求Copilot Chat修復bug 165

8.3.2 為整個函數給出新的提示詞 166

8.3.3 基於函數的部分代碼給出針對性的提示詞 166

8.3.4 自己動手修改代碼來修復bug 167

8.4 根據新技能調整工作流程 168

8.5 將調試技巧應用於新的挑戰 169

8.6 利用調試器來更深入地理解代碼 175

8.7 調試註意事項 175

本章小結 175

 

第9章 煩瑣事務自動化 176

9.1 程序員為何製作工具 177

9.2 如何使用Copilot編寫工具 177

9.3 示例一:清理電子郵件內容 178

9.3.1 與Copilot對話 178

9.3.2 編寫電子郵件清理工具 183

9.4 示例二:為PDF文件添加封面 186

9.4.1 與Copilot對話 187

9.4.2 編寫工具 191

9.5 示例三:合並手機圖片庫 199

9.5.1 與Copilot對話 200

9.5.2 自頂向下設計 203

9.5.3 編寫工具 204

本章小結 207

 

第 10章 開發小游戲 208

10.1 游戲設計入門 208

10.2 加入隨機性 209

10.3 示例一:“數字猜猜樂” 212

10.3.1 游戲玩法介紹 212

10.3.2 自頂向下設計 213

10.3.3 參數與返回值類型 216

10.3.4 實現這些函數 217

10.3.5 為“數字猜猜樂”游戲添加圖形界面 223

10.4 示例二:“餓死膽小鬼” 224

10.4.1 游戲玩法介紹 225

10.4.2 自頂向下設計 227

10.4.3 實現這些函數 230

10.4.4 自定義游戲 235

本章小結 238

 

第 11章 展望未來 239

11.1 提示模式 239

11.1.1 反轉互動模式 240

11.1.2 角色扮演模式 243

11.2 當前局限與未來趨勢 246

11.2.1 Copilot(當前)難以處理的難題 246

11.2.2 能否將Copilot 視為一種全新的編程語言 247

本章小結 250

參考文獻 251