來源:代碼灣
什麼是code?
code就就是一種語言,一種電腦能讀懂的語言。電腦是一個傻*,他理解不了預設兩可的任何東西。比如,你讓你老公去買個西瓜,你老公會自己決定去哪裡買,買幾個,找個搞活動打折的買,總之,你給他錢,他就給你買回來讓你吃到爽的西瓜。但是,你想讓電腦買一個西瓜。你要告訴他:去門口的鮮豐水果店買,買沙瓤無子西瓜,若旁邊的店打折,就去旁邊的店買。總之,你不能讓電腦做任何決定,你要清楚的告訴他所有情況下的所有的行為。而code,就是你和電腦交流的語言,或者說是對電腦的命令。
我們就把電腦理解為一個人,這個人很死板,只能按照你給他的詳細命令進行工作。而這個人工作速度特別特別快,並且保證工作結果都是正確的。
程式設計語言其實不重要,重要的是要明白如何和電腦交流,明白了這個也就能看懂代碼了。
編程 = 演算法 + 資料結構
python就是一種和電腦交流的語言,這種語言單詞(關鍵字)不多,規則也少。下面所有的內容都基於python。
1、判斷
當你命令電腦做一件事情的時候,這件事情可能分一些情況進行處理。
判斷通常涉及到的關鍵字有:if , else, elseif, and, or,<, >,=,<=,>=,==
比如,你讓電腦買西瓜,希望買到打折的西瓜,不打折的話你就不吃了。
if 水果店打折:
買西瓜
else:
不買了
通過這個命令,電腦變得更智能了一些,他可以根據情況執行你的命令。
水果店不打折你就吃不到西瓜,你不開心。那麼,我們讓電腦更智能一些。假如西瓜打折,就買西瓜;不打折的話讓電腦跟老闆講價,老闆同意打折,就買西瓜;不同意,不吃了;
if 水果店打折:
買西瓜
else:
與老闆講價
if 講價成功:
買西瓜
else:
不吃了。
雖然和老闆講價一般都能講成功,但是有的老闆給力給打五折,有的老闆只給打九折。你就想了,若老闆打五折,我就買兩個,今天吃一個,明天吃一個。若老闆不給力,打折不到五折,就買一個,今天先吃,明天再說。
if 水果店打折:
買西瓜
else:
與老闆講價
if 打折成功 and 打折力度<=5:
買兩個西瓜
elseif 打折成功 and 打折力度 > 5:
買一個西瓜
else:
不吃了。
此外,有沒有發現,打著成功這段代碼其實也可以寫成:
if 打折成功:
if 打折力度<=5:
買兩個西瓜
else:
買一個西瓜
else:
不吃了。
由此可見,電腦也不是完全的一成不變,只要你給他的命令他能理解並且不會預設兩可,他都可以完成工作。
and的意思代表且,or的意思代表或。and和or的順序不同,結果也不同,可以通過括弧來說明判斷條件的優先順序。
a==b是比較a和b是否相等的意思,而=代表賦值。賦值的含義,我在下面的變數章節介紹。
2、迴圈
python中涉及到迴圈的關鍵字包括:for…in… ,while,break,continue
上面的例子我們已經讓電腦成功的可以根據不同的情況去水果店買西瓜了,但是若老闆不打折,你就吃不到西瓜了。這時,你就想了,咱們小區門口有三家水果店,分別是鮮豐水果、四季水果和路邊攤,一家不打折不代表三家都不打折啊,所以你希望電腦可以去三家都去看看,挑一家打折的店買西瓜。
for 水果店 in (鮮豐水果、四季水果和路邊攤):
if 水果店 打折:
買西瓜
break(迴圈結束)
else:
啥都不做
帶西瓜回家
迴圈的意義在於,可以用電腦對不同的對象執行相同的命令。
介紹下break,break的意思就是結束迴圈。比如,這段代碼中的break表示,我們一旦買了西瓜,那麼就帶西瓜回家。
3、變數
現在是時候介紹’變數’這個重要的東西了。
我們依然把電腦理解為幫我們工作的一個人,那麼作為一個人,他需要有記憶力,而我們就可以通過變數去控制、利用電腦的記憶力。
變數可以理解為電腦的一個記憶單元,電腦擁有極好的記憶力,所以,可以隨心所欲的使用,用完了就扔,需要了就要。(當然,說隨心所欲是不嚴謹的,但是你可以理解為隨心所欲)
那為什麼叫變數呢,就是因為可以改變。為什麼要改變呢。比如我們都有自己的年齡,我今年18,明年就19了。所以,’年齡’在我的記憶裡是每年改變的。
變數對應的一個東西叫常量,在我的記憶力,我的老婆是江江同學。而這個’老婆’這個記憶單元在我的腦子裡是不會變的,她永遠都是江江同學。常量你現在可以不用理解,我寫主要是為了秀恩愛。
現在,電腦又要去買西瓜了。不過這次,你希望電腦可以在三個水果店中,找到一個打折力度最大的水果店去買水果。
之前所有水果店的最大折扣 = None
之前給最大折扣的水果店 = None
for 水果店 in (鮮豐水果、四季水果和路邊攤):
當前水果店折扣 = 老闆給的折扣
if 當前水果店折扣 < 之前所有水果店的最大折扣:#4折比5折力度大
之前所有水果店的最大折扣 = 當前水果店折扣
之前給最大折扣的水果店 = 水果店
去 之前給最大折扣的水果店 買一個西瓜
以上有以下幾個記憶單元:
之前所有水果店的最大折扣
之前給最大折扣的水果店
當前水果店折扣
水果店 注意,for a in b,a也是一個變數,他在每次執行的時候都是b中的當前執行的一個元素。
這裡需要介紹一些概念:
None 在python中表示空,表示這個記憶單元現在啥都沒有。比如在我情竇初開時,腦海中就已經有了情人這個記憶單元,我一直在尋找,但遇到你之前一直沒有找到,所以那段時間這個記憶單元裡面一直是空。
賦值符號:=。 注意,在電腦語言裡面,一個’=’號表示賦值,兩個等號’==’表示比較前後元素。賦值的意思是,把後面的元素,放到前面的變數裡面。
變數的範圍
範圍這個東西非常重要,但是真心不想講,因為沒辦法結合現實的例子,不過還是大體說明下。
還是剛才的例子,我加了行號,並且我使用-代表空格,表示代碼的縮排。
1 之前所有水果店的最大折扣 = None
2 之前給最大折扣的水果店 = None
3 for 水果店 in (鮮豐水果、四季水果和路邊攤):
4 ---當前水果店折扣 = 老闆給的折扣
5 ---if 當前水果店折扣 < 之前所有水果店的最大折扣:#4折比5折力度大
6 ------之前所有水果店的最大折扣 = 當前水果店折扣
7 ---之前給最大折扣的水果店 = 水果店
8 去 之前給最大折扣的水果店 買一個西瓜
你看這個例子可能納悶,為什麼要先給’之前所有水果店的最大折扣’、’之前給最大折扣的水果店’這兩個變數賦值為None呢。就是因為範圍問題。
你看這個程式,每行代碼的縮排都是不一樣的。變數範圍可以理解為:一個變數,只有在其第一次出現的地方的縮排,以及縮排更多的代碼裡面,才有效。我們第1、2行的變數,就可以用於3-8行,因為這些代碼的縮排都在1、2行的後面。而第四行的變數’當前水果店折扣’,只在5、6、7行有效
1 A = None
2 ————B = None
3 ————..
4 ————————C = None
5 ————————..
6 ————D = None
7 ————..