猜數遊戲
在程序中預設一個 0-9 之間的整數,讓用戶通過鍵盤輸入所猜的數,
如果大於預設的數,顯示 “遺憾,太大了”;小於預設的數,顯示 “遺憾,太小了”
如此循環,直至猜中該數,顯示 “預測 N 次,你猜中了!”,其中 N 是用戶輸入數字的次數
1、Python 分析
● “預設一個 0-9 之間的整數” 可以使用 random 庫中的 randint 函數
注意:randint (a,b) 區間是包含 a 和 b 的,而 range 函數左閉右合
● 用戶鍵盤輸入數字,使用 eval(input())
● 在確定循環次數時,我們用 for 循環,在不確定的時候用 while 循環
● 顯示 “預測 N 次,你猜中了!”, 其中 N 可以使用 format 函數格式化
2、Python 代碼
3、策略
● 簡單查找:從 1 開始依次往上猜
每次猜測只能排除一個數字,如果數字是 100,那從 1 - 100 需要猜 100 次
● 二分查找:每次猜測中間的數字
在未猜測正確前,每次猜測都將餘下的數字排除一半。
二分查找
● low 和 high 表示數組 list 的開始和結束
low = 0 # 數組開始
high = len(list) - 1 # 數組結束
● 只要範圍沒有縮小到只包含一個元素,就檢查中間的元素
● 中間元素
mid = (low + high) // 2
如果 low + high 不是偶數,Python中// 向下取整
● Python 二分查找代碼
● 二分查找的時間複雜度
當第 K 次查找到元素,N/(2^K) >= 1
我們計算時間複雜度是按照[最壞的情況]進行計算
所以二分查找的時間複雜度是log N (默認 log 的底數是 2)
注意:僅當列表是有序的時候,二分查找才管用
>>>
閱讀更多 Python大星 的文章