python是人工智能的入門編程語言?計算機語言,本質上是數學語言的工程化,現在小編就來說說關于python是人工智能的入門編程語言?下面内容希望能幫助到你,我們來一起看看吧!
計算機語言,本質上是數學語言的工程化。
那麼,什麼叫數學語言的工程化?數學語言具有非常高的抽象性,當前的計算機沒辦法理解。那麼我們需要一個中間語言來做一個中介,并且這個中介使用起來非常方便,對數學的要求也不高,這樣的中介,就是工程化。
python語言中,有很多的語法,我不想多教科書式的去講。我喜歡帶着問題叠代。好的,那我們就開始我們的問題:
在一群人裡面,高低不同,我想讓最高的那個家夥,走到最前面來,而且是沿着他的位置,穿過每個人走到最前面,當與某個人重合時,被重合的人就後退到最高的人的位置。就這樣一個過程,我們用計算機模拟一下。
首先我們要有一個東西來記錄高矮。
在計算機裡稱為變量。你懂的,就是和初中那個變量x是一樣的。隻是名字你可以随便起。
在python裡,這個實在是太簡單。
比如高度是160單位cm。
下面那個print就是打印出來的意思。
運行一下,
顯示出來了,160.
多簡單啊。
在python裡,變量是可以随便設置的,你大可不必擔心出錯。在錯誤中學習是最快的方式。出錯了怎麼辦?萬能搜索引擎可以幫助你。
我們是模拟一群人的高矮的,個數少我們可以一個一個的定義。但是多了呢?
Python給了一個東西叫列表。
列表就是把一堆亂七八糟的東西放在一起的一個小組。
這個是一個用中括号括起來的一堆東西, 如
[身高1,身高2,身高3,身高4,衣服,香蕉]
比如,我們設置有10個人的身高列表,可以這樣定義
Pycharm用灰色的提示,你用中文不好吧,畢竟這個語言是外國人寫的。而且中文編碼比較繁瑣啊!
下面我們就用字母來替代吧!下面我們用heights替代一群人的身高。
所有存儲在變量裡的内容,我們有一個比較常用的稱謂,叫數據。
本質上程序有兩部分組成,數據和算法。
以下是一些操作。(補充一下,python的注釋是#開始的一行一行的)
按順序,列表從第一個到第十個,指标從0-9,取值
這裡使用了print的用法,裡面的參數用逗号隔開,分别顯示。如果是字符,則用單引号,或者雙引号,或者三個引号包圍。
這樣操作似乎太麻煩,這裡我們介紹一下for循環
for i in 列表:
操作
這樣的語法。
特别說明,上面的“操作”前面是一個tab的位置,或者四個空格。這個是python特有的間隔方式,用來表示不同層級之間的區分。如果“操作”是在for循環下的,所以操作要比for多一個間隔,這個間隔叫縮進。
for 循環,就是把列表中的值一個一個的取出來分别進行“操作”運算。
例如上面我們說的顯示列表中的值,
運行後是這樣的
好了,這樣我們就建立了一個一群人的高矮的數據heights。
詳細的操作,大家可以搜索,這裡不做深入的探讨,我們隻介紹到做到我們的模拟需要的最小知識點。
這是我們遇到的第一個算法。如果是兩個人,我們怎麼做?
(1)先比較誰高,這個簡單,數字大的就是高個子,這個計算機會
(2)記住這個人的位置
(3)把這個高個子和其他的人比,再記住高一點的那個家夥的位置。
如果是一群人呢,我們怎麼做?
(1)第一個和第二個比
(2)記住高個子的位置
(3)高個子的和第三個比,記住高個子的位置
(4)繼續下去
大家可以考慮一下怎麼完成。
可以先用僞語言描述一下。
什麼是僞語言?
僞語言就是不管你用什麼語言,可以描述清楚操作就可以的描述方式。
我們使用另外一種,我們先準備一個和heights一樣大小的列表,把所有的值都設定為0.
這裡介紹兩個列表操作。
(1)列表的乘法
假設另一個列表是影子,名字叫Shadow
shadow = [0] * 10
這樣我們就獲得了一個含有十個0的列表shadow
(2)獲取列表是一串0-9的數字
有一個函數range(10)
不過,這個不是列表那麼簡單。但是估計這樣想吧,可以認為是類似列表的東西。
我們繼續我們的模拟,先用僞語言把要做的事說清楚。
(1) 定義一個變量height,用max函數算出最大的值賦值給height
(2) 定義一個tall_position 用來存儲位置
(3) 用for循環,取出所有的人的高度比較
for position in range(10):
如果heights[position]=height
tall_position = position
否則,不變
這樣我們就找到了那個最高的人在哪個位置。
代碼如下:
解釋一下,
Line1:就是我們的一群人的高度列表heights
Line2:用了max函數計算了heights中最大值
Line3:定義了一個tall_position用來存儲位置
Line4-8:做了一個for循環
Line5-6: 判斷position位置的人高度是不是和最高的height一樣高
如果一樣高,就把這個位置記錄下來。
Line7-8: 反之,pass,這個就是表示什麼都不做。
這裡使用了if 。。。else。。。函數,使用方法就如上面代碼一樣。
Line9:打印結果
回顧一下問題:
在一群人裡面,高低不同,我想讓最高的那個家夥,走到最前面來,而且是沿着他的位置,穿過每個人走到最前面,當與某個人重合時,被重合的人就後退到最高的人的位置。
我們知道現在的位置是tall_position的位置。我這裡定義的向前,是指向數字小的地方。也就是從tall_position移動到0.
僞語言:
開始
Shadow =heights
for position in range(tall_position):
heights 列表的tall_position-position-1位置的值
賦值給Shadow列表tall_position-position位置的值
height值
賦值給Shadow列表tall_position-position-1位置的值
打印出列表
結束
這裡涉及到交換,如果我們有shadow這個列表了就很簡單了,隻要做兩次賦值就可以了shadow[tall_position-position]=heights[tall_position-position-1]
shadow[tall_position-position-1]=height
代碼如下:
看一下運行結果:
這就是我們預想的!
那麼這個模拟我們就完成了。
這裡有一個問題,我們繼續在程序下面打印一下shadow和heights的值我們比較一下:
居然一模一樣。說明什麼問題?
大家思考一下?
說明列表在賦值的過程中其實是一個對應。也就是說,我賦值給了shadow,但是shadow不是一個新的列表,隻是heights列表的另一個名字,或者說影子。影子是跟着主人變的。
備注:移動過程模拟材料:變量賦值、列表賦值、for循環、if 判斷、max函數、range函數
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!