官术网_书友最值得收藏!

  • Python機器學習
  • (印)阿布舍克·維賈亞瓦吉亞(Abhishek Vijayvargia)
  • 820字
  • 2021-02-08 16:52:24

2.1 為什么選擇Python

Python在數據科學家中是非常受歡迎的編程語言。第一,它免費且易學,不必為了小任務而浪費大量注意力;第二,它是面向對象的語言,這也是其被大型開發者社區支持的原因;第三,巨大的開源庫支持。 Python具有相當數量的開源庫,能夠更迅速地實現數據科學和機器學習解決方案,而無須從頭開始編寫每一個算法。像Pandas、 scikit-learn、 SciPy、 NumPy、 Keras這樣的庫對于快速實現機器學習算法非常有用。

首先,通過一個例子了解如何使用編程語言來解決現實世界的問題。

假設舉辦一個聚會。你為每個進入聚會的人分配一個唯一的1~100之間的號碼。現在聚會結束了,你宣布了一個消息。

“會從1~200之間獲取一個隨機數。如果有兩個人的號碼之和與這個數字相等,就會獎勵這兩個人。”

現在了解到,已經向x個人分配了號碼。如何確定能否給其中兩個人獎勵呢?

可以嘗試使用Python來解決這個問題。首先,從列表中獲取輸入數據。

numberList = list([43,23,1,67,54,2,34,56,23,65,12,9,87,4,33])

現在選擇一個隨機數并將其存儲在一個變量中。

sumSelector = raw_input()

為了解決這個問題,必須先對數據進行排序。在Python列表中排序很簡單,可以通過sort函數來完成。

numberList = numberList.sort()

通過上述語句,將排序后的數字賦值給變量。現在使用兩個指針:一個指向開始處(前指針);另一個指向結束處(后指針)。檢查兩指針所指變量的和。如果和小于給定值(意味著當前的總和小于所需的總和),前指針向前移動一步并再次檢查;如果和大于給定值(意味著當前的總和大于所需的總和),將后指針向后移動一步并再次檢查。無論在任何位置,如果當前的總和等于要求的總和,便可以說,存在兩個人的數值之和與給定的數值相同,需要給予獎勵;如果兩個指針相交并且仍然沒有達到所需的總和,則可以聲稱并不存在兩個人的數值之和與給定的數值相等。

以下是完整的解決方案[1]

def isPrizeGiven(numberList,sumSelector): 
sumOfTwo = sumSelector 
    i=0 
    j = len(numberList) -1 
    if(i>=j): 
        return False 
    while(i<=j): 
        currentSum = numberList[i]+numberList[j] 
        print(i,j,currentSum) 
        if(currentSum==sumOfTwo): 
            return True 
        if(currentSum>sumOfTwo): 
            j=j-1 
        else: 
            i=i+1 
    return False

為獲得所需答案,必須向函數傳遞排序列表和給定的數值(即兩數值的期望和)。

if (isPrizeGiven(numberList,sumSelector): 
    print("No Escape. Give Prize to Everyone") 
else: 
    print("You Saved Yourself!!")

即使現在不能理解此代碼,也不要擔心。接下來我們還會對這段代碼進行解析,并介紹程序設計語言的基本原理。

主站蜘蛛池模板: 博罗县| 始兴县| 台安县| 宜丰县| 田东县| 西峡县| 乳山市| 军事| 东乡族自治县| 宝应县| 浙江省| 通河县| 任丘市| 买车| 正安县| 永和县| 班戈县| 胶南市| 新和县| 理塘县| 黄山市| 普洱| 海林市| 长寿区| 常熟市| 定边县| 仪征市| 郁南县| 阿图什市| 天柱县| 陵水| 余江县| 万源市| 贺兰县| 开鲁县| 临澧县| 平乡县| 平度市| 南昌县| 江西省| 锦屏县|