|
能 儲存 、 變更 和 多 次 執行 。 傳統 上 , 程式 設計 的 入門 是 經典 的 「 hello , world 」 程式 。 它 的 目的 是 讓 電腦 在 螢幕 上 顯示 這 兩 個 字 。 這 個 簡單 的 程式 有 幾 種 變化 , 包含 加上 「 !
」 和 使用 大寫 , 但 在 本 書 , 我們 要 用 這 句 話 的 最早 版本 之 一 「 hello , world 」 。 在 Python , 如果 要 在 螢幕 上 顯示 任何 東西 , 也 就是 讓 螢幕 上 出現 文字 , 只要 輸入 「 print 」 , 並 把 要 顯示 的 文字 放 在 括號 內 的 引號 中 。 首先 , 在 Python 殼層 的 提示 >>> 輸入 以下 :print ( 'hello , world' ) 程式碼 有 區分 大小寫 , 應 全部 以 小寫 輸入 , 而 文字 放 在 單引號 或 雙引號 內 皆 可 。 電腦 隨即 會 回應 「 hello , world 」 。 接著 回到 提示 , 等待 其他 指令 。 多 輸入 一些 要 顯示 的 句子 吧 。 解決 問題 : 寫 演算法 來 規劃 程式碼 學習 程式 語言 的 函式 和 語法 來 對 電腦 下 指令 只 是 程式 設計 的 一 部分 。 通常 較 難 的 另 一 部分 是 知道 要 下 什麼 指令 來 解決 特定 問題 。 每 次 要 在 電腦 上 建立 東西 或 解決 問題 時 , 都 要 給 電腦 指令 。 這些 指令 都 要 依 電腦 必須 遵循 的 順序 清楚 定義 。 這 套 在 電腦 上 進行 任何 工作 所 需 的 依序 步驟 稱為 「 演算法 」 ( algorithm ) 。 我們 在 日常 生活 中 都 有 用到 演算法 , 只是 不一定 稱 它們 為 演算法 。 例如 如果 要 做 蛋糕 , 我們 會 依照 食譜 , 這 是 一 系列 依序 的 步驟 。 食譜 就 是 一 種 演算法 。 為 了 解決 問題 和 寫出 好 的 程式碼 , 程式 設計師 會 透過 兩 種 方法 寫下 步驟 ( 即 演算法 ) 來 預先 規劃 : 虛擬 程式碼 ( pseudocode ) 或 流程圖 ( flowchart ) 。 虛擬 程式碼 這 是 以 英語 等 非正式 、 簡單 的 自然 語言 寫成 的 演算法 , 常 以 縮排 來 整理 指令 。 舉例 來 說 , 以下 是 為 四 人 餐桌 擺放 碗盤 的 虛擬 程式碼 。 __UNDEF__ 虛擬 程式碼 以下 重複 4 次 前往 餐桌 下 一 個 空位 放 一 個 碗 在 此 處 在 碗 左側 放 一 張 餐巾 在 碗 右側 放 一 把 湯匙 以下 是 加 總 使用 者 輸入 的 十 個數 並 顯示 在 螢幕 的 虛擬 程式碼 。 __UNDEF__ 虛擬 程式碼 設 總和 為 0 以下 重複 10 次 從 使用 者 取得 數 將數 加 至 總和 將 總和 顯示 於 螢幕 縮排 的 指令 是 要 重複 的 。 在 第二 個 例子 裡 , 兩 個 縮排 的 步驟 ( 向 使用 者 取得 數 和 加到 總和 ) 重複 10 次 。 接著 電腦 在 完成 重複 後 把 總和 顯示 在 螢幕 。 __UNDEF__ 第6 步 : 用 策略 決定 電腦 的 選擇 使用 者 做出 選擇 、 骰子 重擲 後 , 我們 必須 讓 電腦 選擇 哪些 骰子 保留 、 哪些 重 擲 。 我們 可以 用 不同 策略 來 進行 。 以下 是 兩 種 可能性 : 策略 1: 全部 重擲 , 這樣 選擇 字串 全 都 是 r 。 策略 2 : 只有 在 數字 小於 5時 重擲 ; 在 這裡 需要 用到 if-else 敘述式 。 我們 可以 透過 函式 來 執行 各 個 策略 , 以 字串 形式 提供 選擇 。 你 可以 在 檔案 頂端 加入 其 一 或 兩 個 都 放 。 新 建立 的 字串 稱為 choices , 從 函式 回傳 。 def computer_strategy1 ( n ) : # 建立 電腦 選擇 : 全部 重擲 print ( ' 電腦 在 思考 .
.
.
' ) time.sleep ( 3 ) choices = '' # 從 空白 選擇 清單 開始 for i in range ( n ) : choices = choices + 'r' return choicesdef computer_strategy2 ( n ) : # 建立 電腦 選擇 : 若 < 5 則 擲 print ( ' 電腦 在 思考 .
.
.
' ) time.sleep ( 3 ) choices = '' # 從 空白 選擇 清單 開始 for i in range ( n ) : if computer_rolls[i] < 5: choices = choices + 'r' else: choices = choices + '-' return choices 在 電腦 投擲 之後 , 呼叫 其中 一 種 策略 來 建立 新 的 選擇 清單 , 並用 在 roll_again 函式 , 如 下 。 把 這 個 程式碼 加 在 第3 步 加入 的 find_winner 呼叫 之前 。 記得 , 決定 贏家 是 這 個 專題 的 最後 一 行 。 在 線上 查看 完整 的 專題 程式碼 ( 參見 第138 頁 ) , 確認 程式碼 順序 正確 。 # 第6 步 # 決定 選擇 : 使用 策略 函式 之 一 computer_choices = computer_strategy2 ( number_dice ) print ( ' 電腦 選擇 : ' , computer_choices ) # 電腦用 所 做 的 選擇 重擲 roll_again ( computer_choices , computer_rolls ) print ( ' 電腦 重擲 : ' , computer_rolls ) 如何 改進 這 個 遊戲 ? 有 很多 方法 可以 改進 這 個 遊戲 。 ■ 允許 二 到 三 次 重擲 , 讓 使用 者 或 電腦 提升 總分 。 ■ __UNDEF__ 讓 整 個 遊戲 在 迴圈 中 進行 , 以 三 個 回合 決定 贏家 。 ■ __UNDEF__ 變更 得勝 條件 : 最 低分 、 最多 個 六 , 或 其他 。 ■ < 5 是 決定 重擲 的 最佳 策略 嗎 ? 修改 策略 的 程式碼 或 加入 更多 策略 ; 也 可 讓 使用 者 選擇 難度 等級 來 決定 電腦 要 採 什麼 策略 。 ■ 加入 更 好 的 排版 或 ASCII 設計 來 讓 這 個 文字 遊戲 更 美觀 。 這 是 屬於 你 的 骰子 遊戲 , 可以 用 創意 和 Python 程式碼 讓 它 更 獨特 。 更 進一步 實驗 與 延伸 實驗 1: 創造 抽象 藝術用 隨機 顏色 、 隨機 尺寸 的 圓圈 和 隨機 尺寸 的 正方形 , 來 創造 每 次 執行 程式 都 不同 的 抽象 藝術 ( abstract art ) 。 __UNDEF__ 虛擬 程式碼 匯入 turtle 模組 匯入 random 模組 建立 海龜 用 第2 章 的 方法 建立 顏色 清單 以下 執行 100 次 向 前 移動 海龜 0 和 360 之間 的 隨機 距離 開始 填入 顏色 設定 隨機 填入 顏色 設 尺寸 為 10 和 50 之間 的 隨機數 以 square函式 和 尺寸畫 正方形 結束 填入 正方形 顏色 向 前 移動 海龜 20 和 100 之間 的 隨機 距離 以 0 和 360 之間 的 隨機 角度 旋轉 海龜 開始 填入 顏色 設定 隨機 填入 顏色 以 5 和 30 之間 的 隨機數 畫圓 結束 填入 圓形 顏色 實驗 2 : 創造 有 變化 的 鄉村 風景畫 使用 下面 的 house 函式 ( 這 是 以 第51 頁 的 實驗 為 基礎 ) , 在 風景畫 中 創造 各 種 不同 顏色 尺寸 的 隨機 小 房子 , 每 次 執行 程式 時 都 會 有 不同 結果 。 __UNDEF__ 虛擬 程式碼 匯入 turtle 模組 匯入 random 模組 建立 海龜 建立 顏色 清單 從 下方 複製 函式 程式 碼設 背景 為 藍色 以下 重複 10 次
|